Как я могу получить доступ к последнему результату в Scala REPL?

В python REPL я могу делать такие вещи, как:

>>> [1,2,3,4]
[1, 2, 3, 4]
>>> sum(_)
10

В ближайшее время REPL я могу сделать это:

user=> "Hello!"
"Hello!"

user=> *1
"Hello!"

Есть ли что-то подобное в Scala REPL?

3 ответа

Решение

Да, вы можете использовать точечную запись для ссылки на последний результат:

scala> List(1,2,3,4)
res0: List[Int] = List(1, 2, 3, 4)

scala> .sum
res1: Int = 10

Вы можете сослаться на предыдущий вывод как resN для некоторых N, Вы, наверное, заметили, что в Scala REPL результаты печатаются в виде resN: Type = value:

Welcome to Scala version 2.9.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_24).
Type in expressions to have them evaluated.
Type :help for more information.

scala> List(1,2,3,4)
res0: List[Int] = List(1, 2, 3, 4)

scala> "Hello!"
res1: java.lang.String = Hello!

Хорошо, что resN реальное имя переменной. В этом примере вы можете обратиться к списку как res0 и строка как res1 для (по крайней мере, насколько я знаю), пока открыт REPL:

scala> (res0.toString + res1) toLowerCase
res2: java.lang.String = list(1, 2, 3, 4)hello!

Обычно я просто нажимаю клавишу to, чтобы вернуть последнюю строку кода и продолжить ввод текста. Преимущество состоит в том, что вы можете сохранить все выражение вместе, что облегчает его последующее вырезание и вставку или редактирование.

Другие вопросы по тегам