Как привязать типы к моему интерпретатору Scala?

Я пытаюсь связать значения в интерпретаторе с типами из внешней библиотеки.

Вот как я сейчас объявляю свой интерпретатор:

val interpreter = new IMain({
    val settings = new Settings
    settings.usejavacp.value = true
    settings.deprecation.value = true
    settings.embeddedDefaults[IMessage]
    settings.embeddedDefaults[IChannel]
    settings.embeddedDefaults[IGuild]
    settings.embeddedDefaults[IUser]
    settings
})
// Variable bindings
interpreter.bind("message", "IMessage", event.getMessage)
interpreter.bind("guild", "IGuild", event.getGuild)
interpreter.bind("user", "IUser", event.getAuthor)
interpreter.bind("channel", "IChannel", event.getChannel)

interpreter.interpret(code)

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

<console>:5: error: not found: type IMessage
         var value: IMessage = _
                    ^
<console>:6: error: not found: type IMessage
         def set(x: _root_.scala.Any) = value = x.asInstanceOf[IMessage]
                                                               ^
<console>:5: error: not found: type IGuild
         var value: IGuild = _
                    ^
<console>:6: error: not found: type IGuild
         def set(x: _root_.scala.Any) = value = x.asInstanceOf[IGuild]
                                                               ^
...

Я также пытаюсь включить объект, который я объявил, в область действия интерпретатора, и я не уверен, как бы я это сделал. Любая помощь будет оценена по достоинству!


person Robby Zambito    schedule 10.04.2018    source источник


Ответы (2)


Я думаю, что ваш переводчик ничего не знает об этой библиотеке. Поэтому вам нужен способ импортировать его. На самом деле на этот вопрос уже отвечено

person Serhii Shynkarenko    schedule 10.04.2018
comment
Спасибо за ссылку, однако это не совсем то, что я пытаюсь сделать. Я пытаюсь использовать интерпретатор Scala из своего собственного кода (что я могу успешно сделать таким образом со стандартными типами). Я копался в документах sbt и не нашел эквивалента Scala-класса IMain в библиотеке SBT. - person Robby Zambito; 10.04.2018

Пожалуйста, попробуйте с полным путем квалификатора, например

interpreter.bind("message", "com.abc.xyz.IMessage", event.getMessage)
person user811602    schedule 24.10.2018