Как я могу получить доступ к последнему выходному значению в Scala REPL?
В Ruby, Python и, возможно, куче других REPL, вы можете ссылаться на последнее значение с помощью _
:
>> longCalculationIForgotToAssignToAVariable
42
>> foo = _
>> foo
42
Как я могу сделать это в Scala REPL? Я знаю о .
Особенность REPL:
scala> foo.getBar()
res1: com.stackru.Bar = [Bar]
scala> .getBaz() // calls method on bar
Но это не делает то, что я хочу. Ни один не делает _
очевидно, иначе я бы не спрашивал:
scala> val foo = _
<console>:37: error: unbound placeholder parameter
Как я могу это сделать? Аммонит тоже хорошо отвечает, но хотел бы сделать это в ванильном REPL.
1 ответ
Вы можете использовать имена переменных по умолчанию (начните с resN
) предоставлено REPL, см. пример ниже
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)
Также смотрите - Как я могу получить доступ к последнему результату в 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)