如何使用元组列表定义case类并在scala中访问元组
我有一个case类,它有一个参数a,它是int元组的列表。我想在a上迭代,并在a上定义操作 我尝试了以下方法:如何使用元组列表定义case类并在scala中访问元组,scala,case-class,Scala,Case Class,我有一个case类,它有一个参数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) } } case class XType(a:List[(Int,In
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)
}
}
case class XType(a:List[(Int,Int)]){
对于(x=0)
}
def op():XType={
对于(x您遇到了一个关于for
理解的问题,这实际上是另一种表达foreach
和map
(以及flatMap
和with filter
/filter
)的方式。有关更多解释,请参阅和
您对
理解的第一个(带有断言的那一个)相当于
a.foreach(x => assert(x._2 >= 0))
a
是一个列表
,x
是一个(Int,Int)
,一切都很好
但是,第二个on(在op
中)转换为
XType(a).map(x => x)
这没有意义--XType
不知道如何处理map
,就像错误所说的那样
XType
的一个实例将其a
简单地称为a
(或this.a
),因此a.map(x=>x)
在op
中就可以了(然后将结果转换成一个新的XType
)
作为一般规则,for
理解对于嵌套的map
s(或flatMap
s或任何东西)都很方便,而不是作为其他语言中for
循环的1-1等价物——只需使用map
。您遇到了for
理解的问题,这实际上是另一种表达foreach
和map
(和flatMap
和withFilter
/filter
)。有关更多说明,请参阅和
您对
理解的第一个(带有断言的那一个)相当于
a.foreach(x => assert(x._2 >= 0))
a
是一个列表
,x
是一个(Int,Int)
,一切都很好
但是,第二个on(在op
中)转换为
XType(a).map(x => x)
这没有意义--XType
不知道如何处理map
,就像错误所说的那样
XType
的一个实例将其a
简单地称为a
(或this.a
),因此a.map(x=>x)
在op
中就可以了(然后将结果转换成一个新的XType
)
一般来说,for
理解对于嵌套的map
s(或flatMap
s或其他任何东西)很方便,而不是作为其他语言中for
循环的1-1等价物——只需使用map
。您可以通过以下方式访问元组列表:
def op(): XType = {
XType(a.map(...))
}
您可以通过以下方式访问元组列表:
def op(): XType = {
XType(a.map(...))
}