一個同事寫了下面的代碼:Scala - 如何調用一個類型的泛型子類型的方法?
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
方法?
首先,它是位於類型位置的<<:而不是<<:'。其次,def nonEmpty2(coll:TraversableOnce [_])= coll.nonEmpty'有什麼問題?它將與任何子類型(這是整個繼承點)一起工作。 –
謝謝!我喜歡你的解決方案。 – Frank