Как я могу получить доступ к последнему выходному значению в 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)
Другие вопросы по тегам