在scala中,有什么与Groovy出色的SomeClass.metaClass.getProperty函数等效的东西吗?这对于制作特定于域的语言将非常有帮助。例如,然后我可以说:val x = SomeClass(); x.arbitraryPropertyName
而不是x.get("arbitraryPropertyName")
或x("arbitraryPropertyName")
。
最佳答案
从您的描述来看,此功能听起来像Scala的Dynamic
。从Scaladoc,
也就是说,如果您的类扩展了Dynamic
,则形式x.arbitraryPropertyName
的调用将转换为x.applyDynamic("arbitraryPropertyName")
,并且当然可以定义applyDynamic
的行为。