解构自定义类

时间:2018-05-24 12:16:42

标签: scala

我想解构下面的课程

case class Box(name: Text, value: Text) extends Product2[Text, Text] {
    override def _1: Text = name
    override def _2: Text = value
    override def canEqual(that: Any): Boolean = ???
  }

在for循环中,像这样

val boxes: List[Box] = // ...
for ((name, value) <- boxes) { /* ... */ }

我实现了该类以匹配Tuple2的实现。我错过了什么?

2 个答案:

答案 0 :(得分:1)

这适用于for循环:

for (Box(name, value) <- boxes) { /* ... */ }

只需添加Box即可获得所需内容

答案 1 :(得分:1)

要构建课程,您需要define an unapply method taking this class, normally in its companion object。通过将其声明为case class,此方法已存在(并且您无法手动定义它)。

但是,将其作为案例类也会自动extends Product2[Text, Text]并覆盖canEqual(正确,而不是???),因此您不需要这些。或_1_2;那些是专门用于元组的方法。正如泽维尔的评论所说,离开,

case class Box(name: Text, value: Text)