如何使用元组列表定义 case class 并访问 scala 中的元组
How to define case class with a list of tuples and access the tuples in scala
我有一个案例 class,其参数 a 是一个 int 元组列表。我想遍历 a 并定义 a 上的操作。
我试过以下方法:
case class XType (a: List[(Int, Int)]) {
for (x <- a) {
assert(x._2 >= 0)
}
def op(): XType = {
for ( x <- XType(a))
yield (x._1, x._2)
}
}
但是,我收到错误消息:
"Value map is not a member of XType."
如何访问元组的整数并定义对它们的操作?
您 运行 遇到了 for
理解的问题,这实际上是表达 foreach
和 map
(以及 flatMap
和 withFilter
/filter
)。有关更多说明,请参阅 here and here。
你的第一个 for
理解(带断言的)等同于
a.foreach(x => assert(x._2 >= 0))
a
是一个List
,x
是一个(Int, Int)
,一切都很好。
但是,第二个(在 op
中)转换为
XType(a).map(x => x)
这没有意义--XType
不知道如何处理 map
,就像错误所说的那样。
XType
的实例将其 a
简单地称为 a
(或 this.a
),因此 a.map(x => x)
在 op
(然后将结果变成新的XType
)。
作为一般规则,for
理解对于嵌套的 map
s(或 flatMap
s 或其他)很方便,而不是 [=12 的 1-1 等价物=] 在其他语言中循环——只需使用 map
即可。
您可以通过以下方式访问元组列表:
def op(): XType = {
XType(a.map(...))
}
我有一个案例 class,其参数 a 是一个 int 元组列表。我想遍历 a 并定义 a 上的操作。
我试过以下方法:
case class XType (a: List[(Int, Int)]) {
for (x <- a) {
assert(x._2 >= 0)
}
def op(): XType = {
for ( x <- XType(a))
yield (x._1, x._2)
}
}
但是,我收到错误消息:
"Value map is not a member of XType."
如何访问元组的整数并定义对它们的操作?
您 运行 遇到了 for
理解的问题,这实际上是表达 foreach
和 map
(以及 flatMap
和 withFilter
/filter
)。有关更多说明,请参阅 here and here。
你的第一个 for
理解(带断言的)等同于
a.foreach(x => assert(x._2 >= 0))
a
是一个List
,x
是一个(Int, Int)
,一切都很好。
但是,第二个(在 op
中)转换为
XType(a).map(x => x)
这没有意义--XType
不知道如何处理 map
,就像错误所说的那样。
XType
的实例将其 a
简单地称为 a
(或 this.a
),因此 a.map(x => x)
在 op
(然后将结果变成新的XType
)。
作为一般规则,for
理解对于嵌套的 map
s(或 flatMap
s 或其他)很方便,而不是 [=12 的 1-1 等价物=] 在其他语言中循环——只需使用 map
即可。
您可以通过以下方式访问元组列表:
def op(): XType = {
XType(a.map(...))
}