Юлия запрашивает ввод пользователя из скрипта
Как я могу запросить ввод пользователя из запущенного скрипта в 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)