【问题标题】:Groovy's classX.metaClass.getProperty in scalascala 中 Groovy 的 classX.metaClass.getProperty
【发布时间】:2012-01-13 18:21:58
【问题描述】:

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

【问题讨论】:

    标签: scala groovy dsl metaclass


    【解决方案1】:

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

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

    也就是说,如果你的类扩展了Dynamic,那么x.arbitraryPropertyName 形式的调用会被转换为x.applyDynamic("arbitraryPropertyName"),当然你可以定义applyDynamic 的行为。

    【讨论】:

      猜你喜欢
      • 2011-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多