Scala类型与Traversables不匹配

时间:2017-02-23 18:05:24

标签: scala

我正在尝试编写一个函数,该函数接受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。任何帮助将不胜感激。

1 个答案:

答案 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)