一位同事写了以下代码:
def nonEmpty[Coll[_], T](implicit ev: Coll[T] <:< TraversableOnce[T]): Coll[T] => Boolean =
(coll: Coll[T]) => coll.nonEmpty
目的是能够在nonEmpty
的任何子类型上调用Traversable[T]
。然而,这感觉过于复杂。我试图简化它,但到目前为止没有运气。我试过了,例如:
def nonEmpty2[Coll[T] <:< TraversableOnce[T]](coll: Coll[T]): Boolean = coll.nonEmpty
但是Wrong parameter
Coll[T]
已经拒绝了这一点。它只是一个语法(或一系列语法问题)吗?编写nonEmpty
方法的最简单方法是什么?
答案 0 :(得分:1)
没有必要指明您正在处理包含其他类型的通用(更高级)类型。只需要一个类型参数:
def nonEmpty2[T](coll: T)(implicit ev: T <:< TraversableOnce[_]): Boolean = coll.nonEmpty