Има ли API за стартиране на Scala REPL програмно? [затворено]

Въз основа на нишка и Източници на интерпретатора на Scala изглежда, че няма да е толкова трудно да се получи еквивалент на

def runLine(line: String): String

но някой писал ли е това вече?


person Owen    schedule 02.09.2011    source източник
comment
възможен дубликат на Програмно стартиране на Scala REPL?   -  person Daniel C. Sobral    schedule 03.09.2011
comment
Този отговор дава повече подробности: stackoverflow.com/questions/2160355/ . Обърнете внимание, че интерфейсът на библиотеката е променен (преработен) от Scala 2.9. Освен това може да се сблъскате с проблеми с пътя на класа на вградения REPL, който не е същият като родителския процес; някои решения тук: stackoverflow.com/questions/ 4121567/   -  person Kipton Barros    schedule 03.09.2011
comment
@Daniel, който се опитва да направи съвсем различно нещо, което е прекъсване на scala програма, за да стартира обичайния REPL. Опитвам се да дублирам поведението на REPL в не-REPL.   -  person Owen    schedule 03.09.2011
comment
@Owen Това тогава?   -  person Daniel C. Sobral    schedule 03.09.2011
comment
@Daniel Това е доста близо, въпреки че използва interpreter.main(settings), така че все още използва основния цикъл на стандартния REPL.   -  person Owen    schedule 03.09.2011
comment
@Owen Е, има това, въпреки че указва 2.7.7. Не съм сигурен дали все още работи. Това също не е дубликат на въпроса - човекът вече го е разбрал. Този друг всъщност компилира и зарежда.   -  person Daniel C. Sobral    schedule 04.09.2011


Отговори (1)


Има много примери, плаващи там, но те може да са трудни за намиране. Ето това, което написах преди време:

http://code.google.com/p/simplex3d/source/browse/trunk/Simplex3dConsole/src/simplex3d/console/SimpleInterpreter.scala?r=790

Сложната част е да накарате интерпретатора да зареди Scala буркани. Заредих буркани ръчно, за да работи с web-start, но във вашия случай простото settings.usejavacp.value = true може да е достатъчно.

Можете да видите интерпретатора в действие тук: http://www.simplex3d.org/console/

person Lex    schedule 02.09.2011