除了标准运算符外,我还有一些像sin,cos等数学方法的特性:+, - ,*。
有没有办法用反射来调用它们?我试着这样做:
def apply(name: String)(args: Expression*) = {
val im = mirror.reflect(objectReflectionInstance)
val method = im.symbol.typeSignature.member(TermName(name))
im.reflectMethod(method.asMethod)(args)
}
lazy val mirror = runtimeMirror(Environment.getClass.getClassLoader)
lazy val objectReflectionInstance = {
val module = mirror.staticModule("interpreter.Environment")
mirror.reflectModule(module).instance
}
它适用于“cos”,“sin”但它现在适用于“+”,“*”。我认为这是由scala将下面的方法名称转换为其他内容引起的,但仍然应该有一种“动态”调用它们的方法。