【发布时间】:2018-12-30 08:43:08
【问题描述】:
我按照 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
【问题讨论】:
-
什么是
Node? -
@AndreyTyukin 更新了问题,但不知道这有什么关系。
-
我认为它需要一个有两个参数的函数,而不是一对?
-
确实,
ListNode的定义并不重要...您可以构造List.empty[Int],从而省略任何提及Node或NodeList... 无论如何:reduceOption需要两个参数的函数。snd只接受一个参数。 -
它可以与
def twoArgSnd[T](a: Any, b: T): T = b和reduceOption(twoArgSnd[Int])一起正常工作。