EDIT: после прочтения вашего вопроса снова, я должен признать, что я действительно не отвечал на него;). Но, возможно, это все еще помогает.
Я знаю о двух ограничениях интерпретатора (или REPL), когда дело доходит до загрузки файлов scala (для их интерактивного тестирования).
- Вы не можете загружать файлы scala с определениями пакетов в них. REPL жалуется и не загружает весь класс - файл scala для загрузки. Он читал, что это связано с тем, что файлы, загруженные в REPL, рассматриваются как объект. , , которые, конечно же, не могут иметь в них никаких определений пакетов.
- REPL странный (или немного непредсказуемый), когда есть файлы классов загруженных файлов scala в пути к классам. Отъезд this question by myself и особенно мои 2 последних комментария ко второму ответу.
Кроме того, существует проблема с циклическими зависимостями, что я не знаю, обходной путь для: Предположим, что существует класс A
, который использует класс B
который снова нуждается в A
сделать его работу. Конечно, вы не можете определить A
, так как нет определения B
и наоборот. Предоставление соски для одного из тех, кто не работает, либо:
scala> class A {
| def alterString(s:String) = s
| def printStuff(s:String) = println(alterString(s))
| }
defined class A
scala> class B {
| val prefix = "this is a test: "
| def doJob() = new A() printStuff "1 2 3"
| }
defined class B
scala> class A {
| def alterString(s:String) = new B().prefix + s
| def printStuff(s:String) = println(alterString(s))
| }
defined class A
scala> new B().doJob()
1 2 3
scala>
Хотя я уже представил новое определение A
, класс B
до сих пор используется тот, который присутствовал, когда я определил его.
Я просто задавался вопросом, подходит ли оно. Но компиляция scala слишком медленная. –