Есть ли эквивалент для getch () в Scala? - PullRequest
3 голосов
/ 18 августа 2011

Я ищу функцию в Scala, которая имеет аналогичные функции для getch. Во время использования консоли я хотел бы, чтобы моя программа отображала информацию, основанную на том, какие символы вводит пользователь (например, если я отображал текст, при нажатии n отобразилась бы следующая страница, а p - предыдущая). Прямо сейчас я использую readLine или readChar, но они требуют, чтобы пользователь нажимал Enter после каждого ввода, что немного раздражает. Кроме того, в интерпретаторе плагина Eclipse отображается вводимый символ, хотя, думаю, это неизбежно.

Ответы [ 3 ]

7 голосов
/ 18 августа 2011

scala.Console.readChar, с псевдонимом в текущих воплощениях Scala, как Predef.getChar - самый прямой путь.

scala> readChar
res0: Char = !

ОБНОВЛЕНИЕ

На этот раз без досадных Enter:

scala> Console.in.read.toChar
res0: Char = !
2 голосов
/ 03 апреля 2017

Использовать стандартную библиотеку lib:

    StdIn.readChar()
2 голосов
/ 18 августа 2011

Вы можете попробовать использовать консоль Java , которая была добавлена ​​в 1.6 . Вот сессия REPL:

scala> val r  = System.console().reader()
r: java.io.Reader = java.io.Console$LineReader@1d97efc

scala> r.read.toChar
res8: Char = t

во время сеанса воспроизведения я нажал клавишу t после выполнения второго выражения

reed метод не требует Введите и возвращается, как только вы нажмете клавишу.

...