Как вызвать Groovy скрипт из Scala?
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<facts>
<fact id="ItemPrice" displayName="Item Price">
<defaultValue>0</defaultValue>
<script><![CDATA[
Double Value_Sales= 500;
Double Unit_Sales= 10;
Double res=Value_Sales/Unit_Sales;
return res;
]]></script>
</fact>
</facts>
Выше приведен пример скрипта groovy, написанного в xml-файле для определения цены товара.
Java-код для обработки Groovy:
List<Fact> factList = NREUtils.readXml("/SampleDictionary.xml") //cutome API
GroovyShell shell = new GroovyShell();
String scriptStr = factList.get(0).getScript();
Script groovyScript = shell.parse(scriptStr); // return "ItemPrice" script
Binding binding = new Binding();
groovyScript.setBinding(binding);
Object val = groovyScript.run(); // **Result will be 50**
Я хотел бы соответствующий код Scala для того же.
1 ответ
Без дополнительной информации о вашей проблеме, поскольку оба языка (scala и groovy) выполняются в JVM, я бы посоветовал вам просто скомпилировать код groovy и включить jar в classpath JVM, в котором выполняется ваш код scala.
Здесь у вас есть несколько идей о том, как превратить отличный код в полезный байт-код: http://docs.groovy-lang.org/latest/html/documentation/tools-groovyc.html
Затем сделайте так, как вы делаете с любой библиотекой Java, которую вы хотели бы вызвать из Scala: Использование библиотек Java в Scala