Я пишу модуль компиляции во время выполнения.Код выглядит следующим образом:
val settings = new Settings
settings.usejavacp.value = true
val interpreter = new IMain(settings)
interpreter.interpret(""" val result = the scala code here """)
interpreter.valueOfTerm("result")//return the result var
Но у меня есть некоторые проблемы.
Как разрешить нескольким потокам вызывать IMain для получения разных результатов?Назначен ли экземпляр IMain для потока?Это будет пустой тратой ресурсов компьютера (безостановочная компиляция)
как переопределить скомпилированный класс?
переменные, сгенерированные интерпретатором (например, «результат»), всегда будут сохраняться?Как удалить временную переменную?Есть ли лучший API, можно вызвать напрямую или как улучшить мой код?