gpt4 book ai didi

class - 向 Scala 案例类添加一个字段?

转载 作者:行者123 更新时间:2023-12-02 06:20:31 24 4
gpt4 key购买 nike

我看过一些关于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/

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