我正在尝试编写一个函数,该函数接受Traversable函数和Traversable of values,并返回应用于这些值的Traversable函数。当我尝试在列表和向量上调用函数时,我收到类型不匹配错误。这是我的代码:
def applyFunctions[A](x: Traversable[A => A], y: Traversable[A]): Traversable[A] = {
for (ys <- y;
xs <- x
) yield (xs(ys))
}
然后我尝试用这个来调用这个函数:
transform(List({(x: Double) => x + x}, {(x: Double) => x * 2}), Vector(1,2,3))
我收到以下错误:
error: type mismatch;
found : List[Double => Double]
required: Traversable[AnyVal => AnyVal]
我认为List是Traversable的子类,所以我可以在函数定义中使用Traversable。任何帮助将不胜感激。
答案 0 :(得分:1)
Vector 被解释为 Vector [Int] ,您可以将其声明为 Vector [Double] ,因为它应该具有相同的类型作为函数中的类型A,它是 Double :
applyFunctions(List({(x: Double) => x + x}, {(x: Double) => x * 2}), Vector[Double](1,2,3))
// res9: Traversable[Double] = Vector(2.0, 2.0, 4.0, 4.0, 6.0, 6.0)