我正在尝试将列表与以下功能组合在一起:
def merge(first: List[(Char, Int)], other: List[(Char, Int)]): List[List[(Char, Int)]] =
first.flatMap(tpl => other map (tpl2 => List(tpl, tpl2)))
def combine(l: List[List[(Char, Int)]]): List[List[(Char, Int)]] = l reduceLeft merge
不幸的是,我得到以下编译器消息:
错误:类型不匹配;
found :( List [(Char,Int)],List [(Char,Int)])=>列表[List [(Char,Int)]]
required :( List [Product with java.io.Serializable],List [(Char,Int)])=>列表[带有java.io.Serializable的产品]
l reduceLeft合并
我了解减少List[Int]
只能生成Int
的结果。在我的情况下,我有List[List[(Char, Int)]]
所以我希望我可以生成List[(Char, Int)]
的结果。任何人都可以帮我理解我的代码有什么问题吗?
答案 0 :(得分:1)
reduceLeft的定义:
def reduceLeft[B >: A](op: (B, A) ⇒ B): B
因此,您的函数merge
必须返回List[(Char, Int)]
而不是List[List[(Char, Int)]]
。此外,您的函数combine
将返回List[(Char, Int)]
,因为它会减少List中的List。