Невозможно загрузить переменные, хранящиеся в файле в Scala, через переменную - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь загрузить файл scala из файловой системы в оболочке spark, используя:

: загрузить «путь к файлу»

Это хорошо работает ->

scala> :load /User/Mohit/file.scala
Loading /User/Mohit/file.scala...
data_site: String = http://download.cms.gov/
download_file_name: String = data.zip
database_table: String = NPES
data_main_file: String = data_pfile
data_prac_loc: String = pl_pfile_
data_other_name: String = othername_pfile_
data_exclusion: String = FileHeader.csv
checking: String = checked

но когда я пытаюсь загрузить этот путь через переменную, он выдаёт мне следующее сообщение об ошибке:

scala> val check = "/User/Mohit/file.scala"
check: String = /User/Mohit/file.scala

scala> :load check
That file does not exist

Примечание: файл действительно существует

ЛюбойПожалуйста, помогите в этом.

1 Ответ

0 голосов
/ 12 февраля 2019

Это не совсем возможно, так как команда :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 без ввода всех имен, но в целом это, вероятно, не очень хорошая идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...