我希望预编译一个过滤谓词,以用于大量数据。具体来说,我将通过用户提供的String类名动态解码protobuf对象,并允许用户基于进入基础对象的String路径生成谓词。例如,“ foo.bar.baz == 2”可能会编译为类似
的代码class Filter {
def test(in: Array[Byte]) = {
Foo.parseFrom(in).getBar.baz == 2
}
}
Scala中似乎有几个用于预编译代码的选项。您可以使用宏,可以使用Scalameta,似乎在谈论针对scala3的新Dotty编译器,也可以使用一些Java即时编译器。我的问题是,Scala中最可靠的代码生成过滤谓词方法是什么?我们目前使用2.12。我不想编写复杂的过滤器生成代码,而这些代码将在新版本的Scala中逐步淘汰。