Юлия запрашивает ввод пользователя из скрипта

Как я могу запросить ввод пользователя из запущенного скрипта в Julia? В MATLAB я бы сделал:

result = input(prompt)

Спасибо

5 ответов

Решение

Самое простое, что можно сделать, это readline(stdin), Это то, что вы ищете?

Как указывает @StefanKarpinski, в будущем это будет решено, и сейчас я так и делаю:

julia> @doc """
           input(prompt::String="")::String

       Read a string from STDIN. The trailing newline is stripped.

       The prompt string, if given, is printed to standard output without a
       trailing newline before reading input.
       """ ->
       function input(prompt::String="")::String
           print(prompt)
           return chomp(readline())
       end
input (generic function with 2 methods)

julia> x = parse(Int, input());
42

julia> typeof(ans)
Int64

julia> name = input("What is your name? ");
What is your name? Ismael

julia> typeof(name)
String

help?> input
search: input

  input(prompt::String="")::String

  Read a string from STDIN. The trailing newline is stripped.

  The prompt string, if given, is printed to standard output without a trailing newline before reading input.

julia>

Теперь в Julia 1.6.1 это так же просто, как набрать:

      num = readline()

Да! без каких-либо аргументов, поскольку значение по умолчанию для позиционного аргумента ввода-вывода функции readline() - " stdin ". Итак, в приведенном выше примере Джулия прочитает ввод от пользователя и сохранит его в переменной « num ».

Функция, которая проверяет, соответствует ли предоставленный ответ ожидаемому типу:

Определение функции:

function getUserInput(T=String,msg="")
  print("$msg ")
  if T == String
      return readline()
  else
    try
      return parse(T,readline())
    catch
     println("Sorry, I could not interpret your answer. Please try again")
     getUserInput(T,msg)
    end
  end
end

Вызов функции (использование):

sentence = getUserInput(String,"Write a sentence:");
n        = getUserInput(Int64,"Write a number:");

Сначала я запустил Pkg.add("Даты"), затем

using Dates

println()
print("enter year  "); year = int(readline(STDIN))
print("enter month "); month = int(readline(STDIN))
print("enter day   "); day = int(readline(STDIN))

date = Date(year, month, day)
println(date)
Другие вопросы по тегам