vis*_*uki 5 dsl groovy scala metaclass
在Scala中有什么相当于Groovy卓越的SomeClass.metaClass.getProperty函数吗?这对于制作特定于域的语言非常有用.例如,我可以说:val x = SomeClass(); x.arbitraryPropertyName而不是x.get("arbitraryPropertyName")或x("arbitraryPropertyName").
val x = SomeClass(); x.arbitraryPropertyName
x.get("arbitraryPropertyName")
x("arbitraryPropertyName")
Kip*_*ros 9
根据您的描述,此功能听起来像Scala的Dynamic.来自Scaladoc,
Dynamic
标记特征,支持动态调用.此特征的实例x允许调用x.meth(args)用于任意方法名称meth和参数列表args.如果x本身不支持调用,则将其重写为x.applyDynamic("meth",args).
也就是说,如果你的类扩展了Dynamic,那么表单的调用x.arbitraryPropertyName就会被转换为x.applyDynamic("arbitraryPropertyName"),当然你可以定义它的行为applyDynamic.
x.arbitraryPropertyName
x.applyDynamic("arbitraryPropertyName")
applyDynamic
归档时间:
14 年,1 月 前
查看次数:
157 次
最近记录: