简单的问题,对不起,如果这是一个愚蠢的问题,因为我刚刚开始scala。我收到类型不匹配错误,说:
found : (AnyRef, org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable) => List[Object]
required: ((AnyRef, org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable)) => scala.collection.GenTraversableOnce[?]
但根据这篇文章(I have a Scala List, how can I get a TraversableOnce?),scala.collection.immutable.List
是Iterable
,因此也是GenTraversableOnce
。然而,这个错误似乎表明不是这样。而且,当我实际查看该帖子的接受答案中的链接时,我没有看到任何对“traversable”这个词的引用。
如果问题与我的内部类不正确有关,那么我不得不说这个错误是非常无法提供的,因为要求内部类是“?”类型。显然是一个空洞的陈述...任何理解这一点的帮助将不胜感激。
Function2[X, Y, Z]
与Function1[(X, Y), Z]
不是一回事。
比较这两个定义:
val f: ((Int, Int)) => Int = xy => xy._1 + xy._2
val f: (Int, Int) => Int = (x, y) => x + y
第一个也可以用模式匹配编写,首先分解元组:
val f: ((Int, Int)) => Int = { case (x, y) => x + y }
这正是错误消息要求您执行的操作:提供一个将元组作为参数而不是二进制函数的一元函数。请注意,有tupled
方法,正是如此。
这里函数的返回类型大多不相关,编译器无法统一它们,因为它在输入类型上失败。
还有关系:
snd
not compile in Scala