我根据Haskell snd
定义了以下函数def snd[T](pair: (_, T)): T = pair._2
尝试将其与List[ListNode[T]]
一起使用不会编译。为什么不呢?
list
.reduceOption(snd)
其中:
case class ListNode[T](data: T, var next: Option[ListNode[T]])(implicit ordering: Ordering[T]) extends Ordered[ListNode[T]] {...}
错误:
Type mismatch, expected: (NonInferedA1, NonInferedA1) => NonInferedA1, actual Tuple2[_, Nothing] => Nothing
答案 0 :(得分:0)
方法reduce
和reduceOption
需要具有偶数2
的函数,而不是采用元组的一元函数。
两者之间有区别
Function1[(X, Y), Z]
和
Function2[X, Y, Z]
第一个是一元且采用元组,第二个是二进制。方法及其eta扩展同样适用。
这在这里工作正常:
def twoArgSnd[T](a: Any, b: T): T = b
list.reduceOption(twoArgSnd[Int])
也相关: