scala中的Groovy的classX.metaClass.getProperty

时间:2011-12-06 03:29:11

标签: scala groovy dsl metaclass

在scala中是否有与Groovy卓越的SomeClass.metaClass.getProperty函数相同的东西?这对于制作特定于域的语言非常有用。例如,我可以说:val x = SomeClass(); x.arbitraryPropertyName而不是x.get("arbitraryPropertyName")x("arbitraryPropertyName")

1 个答案:

答案 0 :(得分:9)

根据您的描述,此功能听起来像Scala的Dynamic。来自Scaladoc

  

启用动态调用的标记特征。实例x   trait允许调用x.meth(args)来获取任意方法名称meth和   参数列表args。如果x本身不支持调用,则为   改写为x.applyDynamic(“meth”,args)。

也就是说,如果您的课程延伸Dynamic,则表单x.arbitraryPropertyName的调用会被转换为x.applyDynamic("arbitraryPropertyName"),当然您可以定义applyDynamic的行为