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

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

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

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

В clojure REPL я могу сделать это:

user=> "Hello!"
"Hello!"

user=> *1
"Hello!"

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

4b9b3361

Ответ 1

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

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

scala> .sum
res1: Int = 10

Ответ 2

Вы можете ссылаться на предыдущий вывод как 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!

Ответ 3

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