scala 中 Groovy 的 classX.metaClass.getProperty

Posted

技术标签:

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于scala 中 Groovy 的 classX.metaClass.getProperty的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Java 调用 Groovy 或 Scala UDF 来更新 Oracle?

Scala,Groovy,Clojure三门语言的区别

通过Groovy来消除代码噪声

Java & Groovy & Scala & Kotlin - 20.Switch 与模式匹配

实时时间序列数据中的峰值信号检测Matlab R Golang Python Swift Groovy C ++ C ++ Rust Scala Kotlin Ruby Fortran Julia C

Scala初步(基础篇)