gpt4 book ai didi

scala - 隐式类也可以是动态的吗?

转载 作者:行者123 更新时间:2023-12-01 00:09:42 25 4
gpt4 key购买 nike

我尝试通过执行以下操作为类隐式添加动态功能:

case class C(map: Map[String, String])

implicit class Enhancer(c: C) extends Dynamic {
def selectDynamic(str: String) = c.map.getOrElse(str, "")
}

val c = C(Map("a" -> "A"))

这不会编译
val up = c.a

但是显式调用将:
val up = Enhancer(c).a

为什么是这样?

最佳答案

the specification中的规则是

Selection on Dynamic

If none of the previous conversions applies, and eis a prefix of a selection e.x, and e's type conforms to class scala.Dynamic, then the selection is rewritten according to the rules for dynamic member selection.


Conformance不包括“可以隐式转换”;所以不,你不能添加 Dynamic含蓄地。你可以为 Scala 的 future 版本提出它,但如果它被接受,我会感到惊讶。

关于scala - 隐式类也可以是动态的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59837449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com