Java表达式树

时间:2009-09-25 20:58:51

标签: java linq scala jvm expression-trees

.net的LINQ是否等同于JVM的表达式树?我想在Scala中实现一些类似LINQ的代码结构,我想知道是否还要滚动我自己的表达式树库。

更新: 我对linq等价物本身并不感兴趣。 .net有一大组表达式树工具,可以很容易地在运行时动态编译代码,可以从代码中调用它。我想进行的项目与数据库无关。表达式树提供了一种简单的方法来描述对数据进行操作的代码。

如果没有库我的其他选项,我认为是创建一个发出字节代码的选项。

2 个答案:

答案 0 :(得分:4)

从2.10开始,Scala有了宏,它允许您在编译时访问其参数的抽象语法树:http://scalamacros.org/。以下是一些使用示例,包括LINQ草图:http://scalamacros.org/paperstalks/2013-12-02-WhatAreMacrosGoodFor.pdf

答案 1 :(得分:1)

我最了解的是Julian Hyde的linq4jOptiq库。它们有一个表达式树模型,支持类似LINQ的编程模型(受Java语法约束)。