13

Scala プログラムでは、標準入力からパスワード文字列を読み取る必要があります (エコーを無効にして)。私が試した:

java.io.Console.readPassword

しかし、何らかの理由で、java.io.Consoleオブジェクト内のメソッドを Scala から呼び出すことができません (?)。

Scala の標準入力から (エコーを無効にして) 文字列を読み取る "標準的な" 方法はどれですか?

4

1 に答える 1

16

コンソール プロンプトからパスワードを読み取りたいと想定しているため、 (はシングルトンではありません)Consoleからインスタンスを作成する必要があります。SystemConsole

scala> val standardIn = System.console()
standardIn: java.io.Console = java.io.Console@69d1964d

scala> val password = standardIn.readPassword()

Scala の型推論と、デフォルトですでにスコープ内にimportあるという事実のために、 no は必要ないことに注意してください。System

詳細については、javadocjava.io.Console参照してください。

編集: コンパイルされた Scala プログラムで:

object ReadPassword {
  def main(args: Array[String]) {
    val standardIn = System.console()
    println("standardIn object: " + standardIn)

    print("Password> ")
    val pw = standardIn.readPassword()

    print("Password: ")
    pw.foreach(print) // For demonstration purposes
    println()
  }
}

コンパイル/実行:

$ scalac ReadPassword.scala
$ scala ReadPassword
standardIn object: java.io.Console@311671b2
Password> 
Password: hello world
于 2012-10-30T19:21:02.827 に答える