Это не совсем возможно, так как команда :load
в REPL не принимает String
в качестве аргумента, и на самом деле это не обычный метод Scala (как мы бы сделали, если бы мы определили * 1003)* в REPL) вообще.Двоеточие указывает, что это команда REPL, а аргументы команд REPL не оцениваются как код Scala, поэтому здесь check
- это просто имя файла check
, а не переменная Scala, которую вы определили.
Возможно загрузить файл программным способом, как это, но это немного сложнее, и этот подход не гарантированно работает в версиях Scala.Если у вас есть файл foo.scala
в текущем каталоге, например:
val message = "hello world"
println(message)
Тогда вы можете сделать следующее в REPL:
scala> val fooSource = "foo.scala"
fooSource: String = foo.scala
scala> :power
Power mode enabled. :phase is at typer.
import scala.tools.nsc._, intp.global._, definitions._
Try :help or completions for vals._ and power._
scala> r.loadCommand(fooSource)
Loading foo.scala...
message: String = hello world
hello world
res0: $r.r.Result = Result(true,Some(:load foo.scala))
scala> message
res2: String = hello world
… где r
- этоспециальная переменная, введенная :power
, которая дает вам программный доступ к интерактивному циклу REPL.Я делал это раньше, когда хотел открыть несколько сгенерированных исходных файлов в REPL без ввода всех имен, но в целом это, вероятно, не очень хорошая идея.