如何在Scala REPL中访问最后的结果?

时间:2012-08-15 15:30:17

标签: scala clojure read-eval-print-loop

在python REPL中,我可以执行以下操作:

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

在clojure REPL中,我可以这样做:

user=> "Hello!"
"Hello!"

user=> *1
"Hello!"

Scala REPL中是否有类似的内容?

3 个答案:

答案 0 :(得分:40)

是的,您可以使用点表示法来引用最后的结果:

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

scala> .sum
res1: Int = 10

答案 1 :(得分:7)

对于某些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是一个真正的变量名。在此示例中,只要REPL处于打开状态,您就可以将列表称为res0,将字符串称为res1(至少据我所知):

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

答案 2 :(得分:-1)

我通常只需按键即可返回最后一行代码并继续输入。这样做的好处是可以将整个表达式保持在一起,以便以后轻松剪切和粘贴或编辑。