如何访问 Scala REPL 中的最后一个输出值?
How can I access the last output value in the Scala REPL?
在 Ruby、Python 以及可能还有一堆其他 REPL 中,您可以使用 _
:
来引用最后一个值
>> longCalculationIForgotToAssignToAVariable
42
>> foo = _
>> foo
42
如何在 Scala REPL 中执行此操作?我知道 REPL 的 .
特性:
scala> foo.getBar()
res1: com.Whosebug.Bar = [Bar]
scala> .getBaz() // calls method on bar
但这不是我想要的。显然 _
也没有,否则我不会问:
scala> val foo = _
<console>:37: error: unbound placeholder parameter
我该怎么做? Ammonite 的回答也很好,但我很乐意在原版 REPL 中这样做。
您可以使用 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)
如上例定义classes/variables后;
scala> $intp.unqualifiedIds
res3: List[String] = List($intp, Bar, Bar, myBar, res0, res1, res2)
在 Ruby、Python 以及可能还有一堆其他 REPL 中,您可以使用 _
:
>> longCalculationIForgotToAssignToAVariable
42
>> foo = _
>> foo
42
如何在 Scala REPL 中执行此操作?我知道 REPL 的 .
特性:
scala> foo.getBar()
res1: com.Whosebug.Bar = [Bar]
scala> .getBaz() // calls method on bar
但这不是我想要的。显然 _
也没有,否则我不会问:
scala> val foo = _
<console>:37: error: unbound placeholder parameter
我该怎么做? Ammonite 的回答也很好,但我很乐意在原版 REPL 中这样做。
您可以使用 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)
如上例定义classes/variables后;
scala> $intp.unqualifiedIds
res3: List[String] = List($intp, Bar, Bar, myBar, res0, res1, res2)