当前位置: 首页 > 知识库问答 >
问题:

向Scala case类添加字段?

璩涛
2023-03-14

我看到过一些关于pimp my Library pattern的博客,这些博客似乎可以很好地为类添加行为。

但是,如果我有一个案例类并且我要向其中添加数据成员怎么办?作为一个case类,我不能扩展它(不推荐/强烈不鼓励从case类继承)。这些皮条客模式是否允许我将数据添加到case类中?

共有1个答案

慕佑运
2023-03-14

不--我不明白你怎么能让这个工作,因为丰富的实例通常会被丢弃(注意:最近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

然而,我发现这在实践中并不有用。你有一个包装纸;你最好把这件事说清楚

 类似资料:
  • 我正在努力使我的代码更易读和简洁。 我当前遇到的最大问题是类。每次创建使用的新类时,我都必须声明的所有函数,以使类更易于理解和使用。 例: 我四处寻找解决办法,但我找不到任何适合我的办法,所以我试着想出我自己的办法。 但是当我尝试实现EventEmitterType接口时,它会抛出一个错误 我发现,由于某种原因,在和函数中,类型被称为,这与不兼容,在中,的类型是。 问题:是否有任何方法可以解决这个

  • 有没有办法在Apache Pdfbox中添加额外的字体样式? 我们目前正在尝试在系统中打印PDF(目前正在使用PDF渲染器)我一直在寻找各种替代方案(pdfbox、jpedal、jPDFPrint) 我们希望有一个免费的GPL兼容库可以使用,因此我们倾向于使用pdfbox。我已经能够编写一些示例代码来打印出“有效”的pdf。见下文: 正如我提到的,这是有效的,但我遇到的问题是PdfBox似乎无法识

  • 假设我在一个数组列表中添加了2个用户Apple和Orange。然后我想将牛顿添加到苹果的朋友列表中。所以苹果应该有1个朋友,而橙色仍然没有任何朋友,因为我还没有添加他们。 我的问题是,当我把牛顿添加到苹果的朋友中时,牛顿也会出现在orange的朋友中。我只需要一个朋友出现在苹果和橙色没有。 我认为这是我为用户的朋友设置arraylist的方式,但我不确定如何更改它。

  • 我不得不向现有文档添加一个新字段/s。 下面是用于测试目的的过程AddNewField。 我做错了什么? 在调用fmongo.update后,我的收藏现在有两个文档!

  • 嗨,我试图创建一个由JComboBox和JTextField组成的接口。我已经整理好了向JComboBox添加标签的代码,但是我在向文本字段添加标签时遇到了麻烦。如有任何帮助,不胜感激。

  • 我想在表的第二列中追加 。输出应为 我不想使用,因为我需要在我的实际问题中追加嵌套的div。我制作了同样的小示例。JsFiddle