列表上的Scala错误';s解压方法
我有一个元组列表。元组的每个元素都是MyClass类型:列表上的Scala错误';s解压方法,scala,Scala,我有一个元组列表。元组的每个元素都是MyClass类型: case class MyClass(metrics: List[MyOtherClass], tags: Set[String]) 我想调用unzip方法来获取列表的元组。我收到以下错误消息: 我知道方法定义是:def unzip[A1,A2](隐式asPair:(A)⇒ (A1,A2)):(列表[A1],列表[A2]) 但是,当我调用列表[(Int,Int)]上的解压方法时,编译器不会要求我包含asPair参数 我在这里遗漏了什么?
case class MyClass(metrics: List[MyOtherClass], tags: Set[String])
我想调用unzip方法来获取列表的元组。我收到以下错误消息:
我知道方法定义是:def unzip[A1,A2](隐式asPair:(A)⇒ (A1,A2)):(列表[A1],列表[A2])
但是,当我调用列表[(Int,Int)]上的解压方法时,编译器不会要求我包含asPair参数
我在这里遗漏了什么?我缺少足够的代表发表评论,但是如果您可以发布一个示例,其中包含一些不起作用的代码,那将非常有用 我已经准备了一个简单的例子,解压的效果和预期的一样
object Test {
case class MyClass(metrics: List[MyOtherClass], tags: Set[String])
case class MyOtherClass(thing: Int)
def main(args: Array[String]): Unit = {
val a = List.fill(2)(
(
MyClass(List(MyOtherClass(1)), Set("foo")),
MyClass(List(MyOtherClass(2)), Set("bar"))
)
)
println(a.unzip)
}
}
哪个输出
(List(MyClass(List(MyOtherClass(1)),Set(foo)), MyClass(List(MyOtherClass(1)),Set(foo))),List(MyClass(List(MyOtherClass(2)),Set(bar)), MyClass(List(MyOtherClass(2)),Set(bar))))
编译器不要求我包含asPair参数
这是因为它是隐式的。请仔细阅读Scala中的隐式参数
我有一个元组列表。元组的每个元素都是MyClass类型
错误消息告诉您实际拥有的是
列表[可序列化的产品]
。最常见的原因是它是一个不相关案例类/对象的列表;根据引用的句子,它可能是具有不同数量元素的元组,但您也可能意外地在其中包含一个Some
解压
仅适用于成对列表,而不适用于任意元组。是否确定列表中的所有元素都是包含2个元素的元组?能否提供一个不适用于解压
的示例列表?