如何访问Scala REPL中的最后一个输出值?

时间:2018-02-15 04:14:18

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

在Ruby,Python以及大概其他一些REPL中,您可以使用_引用最后一个值:

>> longCalculationIForgotToAssignToAVariable
42
>> foo = _
>> foo
42

如何在Scala REPL中执行此操作?我了解REPL的.功能:

scala> foo.getBar()
res1: com.stackoverflow.Bar = [Bar]

scala> .getBaz() // calls method on bar

但这并不是我想要的。显然,_也不是,或者我不会问:

scala> val foo = _
<console>:37: error: unbound placeholder parameter

我该怎么做?亚扪人也回答得很好,但是很想在香草REPL中做到这一点。

1 个答案:

答案 0 :(得分:3)

您可以使用REPL提供的默认变量名称(以resN开头),请参阅下面的示例

scala> case class Bar(name: String)
defined class Bar

scala> Bar(name = "American Football")
res0: Bar = Bar(American Football)

你可以看到Bar实例提供了一个变量res0

scala> res0.name
res1: String = American Football

scala> val myBar = res0
myBar: Bar = Bar(American Football)

另见 - How can I access the last result in Scala REPL?

如果您想列出变量,可能会有帮助的旁注

刚刚启动REPL时,

scala> $intp.unqualifiedIds
res0: List[String] = List($intp)

在定义类/变量之后,如上例所示;

scala> $intp.unqualifiedIds
res3: List[String] = List($intp, Bar, Bar, myBar, res0, res1, res2)