2
我有這段代碼,它的工作原理:幫助的隱含價值
val directions = rs.map(_.direction) // Direction extends Enumeration
directions == directions.sorted.reverse
我想,而不是做這樣的事情:
ratings.map(_.direction).isInBackwardsOrder
class RichSeq[T](seq: Seq[T]) {
def isInBackwardsOrder = seq == seq.sorted.reverse
}
object RichSeq {
implicit def seq2richSeq[T](seq: Seq[T]) = new RichSeq[T](seq)
}
我不斷收到以下編譯錯誤:
could not find implicit value for parameter ord: Ordering[T]
def isInBackwardsOrder = seq == seq.sorted.reverse
我不明白的是爲什麼它可以找到參數ORD,當它在原始形式的隱性價值,但不能一旦我把它變成一個實用類,就會發現它。
感謝您的幫助, 亞歷
當我將其更改爲[T:排序]時,我仍然遇到同樣的問題,早期的 –
對我來說工作正常。你有什麼錯誤,在哪裏? –
這工作。在幕後,假設枚舉類型是'Direction',編譯器會查找一個不是衆所周知的類型的Ordering [Direction.Value],但是使用隱式的'Ordering.ordered [A]'它召喚一個需要。因此,Typer階段後的結果代碼看起來像是'seq2richSeq(directions)(Ordering.ordered [Direction.Value](Predef.conforms [Direction.Value]))。isInBackwardsOrder'。令人驚歎的... – huynhjl