Scala动态字段名为x
发布时间:2020-12-16 18:27:53 所属栏目:安全 来源:网络整理
导读:只需实现一个Dynamic对象(使用2.10.0-M3): import language.dynamicsobject D extends Dynamic { def selectDynamic( field : String ) = Symbol( field )} 以下工作正常并且符合预期 object DynamicTest extends App { println( D.a )} 印刷’a 但是,如果
只需实现一个Dynamic对象(使用2.10.0-M3):
import language.dynamics object D extends Dynamic { def selectDynamic( field : String ) = Symbol( field ) } 以下工作正常并且符合预期 object DynamicTest extends App { println( D.a ) } 印刷’a 但是,如果我试试这个: object DynamicTest extends App { println( D.x ) } 我得到了令人讨厌的错误: [error] DynProb.scala:7: type mismatch; [error] found : D.type [error] required: ?{val x: ?} [error] Note that implicit conversions are not applicable because they are ambiguous: [error] both method any2Ensuring in object Predef of type [A](x: A)Ensuring[A] [error] and method any2ArrowAssoc in object Predef of type [A](x: A)ArrowAssoc[A] [error] are possible conversion functions from D.type to ?{val x: ?} [error] println( D.x ) [error] ^ [error] one error found 为什么x如此特别?我做了些蠢事? 解决方法
我现在提出了一个简单的解决方案:
import language.dynamics object D extends Dynamic { def selectDynamic( field : String ) = Symbol( field ) def x = selectDynamic("x") } D.x 返回预期的 res2: Symbol = 'x 我本来希望重新定义一个名为CompleteDynamic的特性来做这个“x”变量覆盖,但我暂时无法做到. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |