web-dev-qa-db-ja.com

Juliaはスクリプトからのユーザー入力を要求します

Juliaで実行中のスクリプトからユーザー入力をリクエストするにはどうすればよいですか? MATLABでは、次のようにします。

result = input(Prompt)

ありがとう

28
ejang

最も簡単なことはreadline(stdin)です。それはあなたが探しているものですか?

25

@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>
17
SalchiPapa

指定された回答が期待されるタイプと一致することを確認する関数:

関数定義:

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:");
1
Antonello