【发布时间】:2012-07-14 08:38:56
【问题描述】:
这里还有一些其他问题相似但完全不同,我需要将其作为一个新问题提出:
我创建了一个空类,我们称之为Test。它没有任何属性或方法。然后我遍历键/值对的映射,动态创建以键命名并包含值的属性......就像这样:
def langMap = [:]
langMap.put("Zero",0)
langMap.put("One",1)
langMap.put("Two",2)
langMap.put("Three",3)
langMap.put("Four",4)
langMap.put("Five",5)
langMap.put("Six",6)
langMap.put("Seven",7)
langMap.put("Eight",8)
langMap.put("Nine",9)
langMap.each { key,val ->
Test.metaClass."${key}" = val
}
现在我可以通过这样创建的新方法访问这些:
Test.metaClass.twoPlusThree = { return Two + Three }
println test.twoPlusThree()
不过,我想做的是从字符串动态加载一组指令,例如“二+三”,动态创建一个方法来评估结果,然后对许多字符串反复重复此过程包含我碰巧有的表达方式。
问题: a)首先,是否有更好,更优雅的方式来做到这一点(基于我提供的信息)? b) 假设这条路径是可行的,从字符串动态构造这个闭包的语法是什么,其中字符串引用的变量名仅在此类的方法中有效?
谢谢!
【问题讨论】: