我看过一些关于Pimp my Library pattern
的博客,这些似乎很适合向类添加行为。
但是如果我有一个case 类
并且我想向它添加数据成员
怎么办?作为案例类,我无法扩展它(不推荐/强烈反对从案例类继承)。这些皮条客模式是否允许我向案例类添加数据?
最佳答案
不 - 我不明白你如何使它工作,因为 丰富的实例 通常被丢弃(注意:新的 pimp-my-library 模式被称为 enrich-my-library) .例如:
scala> case class X(i: Int, s: String)
defined class X
scala> implicit class Y(x: X) {
| var f: Float = 0F
| }
defined class Y
scala> X(1, "a")
res17: X = X(1,a)
scala> res17.f = 5F
res17.f: Float = 0.0
scala> res17.f
res18: Float = 0.0
你必须确保你保留了包装的实例:
scala> res17: Y
res19: Y = Y@4c2d27de
scala> res19.f = 4
res19.f: Float = 4.0
scala> res19.f
res20: Float = 4.0
但是,我发现这在实践中没有用。你有一个包装器;你最好明确说明这一点
关于class - 向 Scala 案例类添加一个字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11053214/