Ответ 1
Да, вы можете использовать точечную нотацию, чтобы ссылаться на последний результат:
scala> List(1,2,3,4)
res0: List[Int] = List(1, 2, 3, 4)
scala> .sum
res1: Int = 10
В python REPL я могу делать такие вещи, как:
>>> [1,2,3,4]
[1, 2, 3, 4]
>>> sum(_)
10
В clojure REPL я могу сделать это:
user=> "Hello!"
"Hello!"
user=> *1
"Hello!"
Есть ли что-то подобное в Scala REPL?
Да, вы можете использовать точечную нотацию, чтобы ссылаться на последний результат:
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!
Обычно я просто нажимаю клавишу ↑, чтобы вернуть последнюю строку кода и продолжить набирать текст. Преимущество этого заключается в том, чтобы сохранить целостное выражение для упрощения вырезания и вставки или редактирования позже.