当前位置: 首页 > 面试题库 >

从Java / Scala实例化Rhinoscript本机物件

程彭祖
2023-03-14
问题内容

我正在尝试提高 javascript代码段评估程序
的性能。这些脚本片段可以引用存在于类似json的对象图的字符串键映射中的任意数量的变量(IE:Json AST)。我正在使用JDK
1.6和嵌入式Rhinoscript引擎(v1.6R2)。

当前,处理采用以下形式:

  1. 分析代码段以发现引用变量的名称
  2. 从映射中检索变量并将其序列化为json字符串
  3. 在脚本开始时,将Json字符串分配给名称相似的变量
  4. 评估增强脚本

我试图弄清楚如何跳过json序列化阶段,并创建直接的Rhinoscript本机对象以放置在脚本的“绑定”中。所需的步骤将是:

  1. 分析代码段以发现引用变量的名称
  2. 从地图中检索变量,并将其 转换为与Rhinoscript等效的本地* 变量 *
  3. 本机对象放置在绑定中
  4. 用所述绑定评估原始脚本

您知道 在哪里可以找到文档或如何实例化本机Rhinoscript对象的示例吗?

如果您想修改,我的scala学习项目可能会有所帮助。我想出的任何答案也应该出现在那…

http://subversion.assembla.com/svn/freshcode_public/learn_scala/datastore/src/test/scala/pkg/script

提前致谢。


问题答案:

因此,经过反复摆弄之后,我提出了一个适当的解决方案,尽管它并没有产生我希望的性能提升(仅提高了10%)。

该解决方案特定于Scala / Lift /
Json,包含在ScriptingUtil.scala文件中。

总结一下:

  1. Context.javaToJs()似乎并非在所有情况下都有效。(java.lang.RuntimeException: No Context associated with current Thread
  2. 需要一个“作用域”类型的对象Scriptable。我想出的解决方案不是很好,但可以。
  3. 创建一个NativeArray:
    val na = new NativeArray(arr)
    

    na.setPrototype(ScriptableObject.getClassPrototype(scope, “Array”))



 类似资料:
  • Rhino于1998年由美国Robert McNeel公司推出,在竞争激烈的三维图形软件市场,其特有的人性化建模特色,使得用户可以迅速掌握和方便运用NURBS建模工具服务于各种设计业和制造业,从而成为无数3D专业制作人员、产品设计师、建筑设计师必备的协同设计工具。 Rhino也是一款平民化的三维设计软件,因其易学易用,并且可无缝配合后端的自造领域的特点,它在国内的产品设计领域应用非常广泛。随着近些

  • 我试图从Java实例化一个嵌套的泛型Scala类,并遇到了这个编译错误。有人能帮忙吗?谢谢 $javac-sctest。JAVA

  • 问题内容: 我怀疑我必须缺少一些非常基础的东西,但是我似乎无法从Java代码访问Scala字段: 产量: 线程“主” java.lang.Error中的异常:未解决的编译问题:字段TestScala.myNum不可见 这张Assembla票证触及了这个主题,但我的小头盖骨无法解析有用的解决方案: http://scala-ide.assembla.com/spaces/scala-ide/tick

  • 问题内容: 我想要的只是使用一些并发Set(看起来根本不存在)。Java用于实现该行为。我想在Scala中做类似的事情,所以我创建了Scala HashMap(或Java ConcurrentHashMap)实例,并尝试添加一些元组: 当然,由于Unit是抽象的也是最终的,因此这使编译过程崩溃了。 如何使这项工作?我应该使用/ 代替吗?我必须确保没有人插入任何值。 感谢帮助 问题答案: 您可以只使

  • 问题内容: 当用Java实例化一个对象时,真正进入内存的是什么? 是否包含父级构造函数的副本? 投射时,为什么隐藏数据成员的行为与重写方法不同? 我理解为使您正确使用这些东西而通常给出的抽象解释,但是JVM如何真正做到这一点。 问题答案: 实例化对象时,实际上仅“静态”数据以及创建该对象的对象类型的引用被“创建”。 没有方法被复制过。 创建它的类的“引用”实际上是一个指针调度表。该类可用的每个方法

  • 问题内容: 我试图将一些Scala代码注入到现有的Java应用程序中。(所以,话说回来,我想要更多的乐趣)。 我在Scala中创建一个单例的东西 现在,在OldJava.java中 我应该填写什么以便Java调用showMyPower方法?我尝试了两者 ,但没有任何效果。 (使用Jad反编译类文件,除了胡说八道之外,什么都没给我显示。) 编辑 我删除了声明,scala产生了预期的静态方法。(呼吁工