Ölçekli dokümanlar, Enumeration.Val öğesinin sipariş edildiğini söylüyor, ancak sıralamayı desteklemelerini gerektiren numaralandırmalarla ilgili sıralama kısıtlamalarını zorlamaya çalıştığımda tutarsız davranış alıyorum:Scala Numaralandırma değerleri sipariş edilmiyor?
object Dogs extends Enumeration {
val Sam, Tom, Rover = Value
}
def doSomething[A <% Ordered[A]](a : List[A]) : Unit = {
println(a.sortWith(_ < _))
}
import Dogs._
val xs = List(Rover, Tom, Sam, Sam, Rover)
println(xs.sortWith(_ < _)) // works!
doSomething(xs) // fails =(
Son iki ifadeden ilk eserler ve Numaralandırma değerlerinin tanımlanmış bir siparişi olduğunu gösterir. İkincisi bir hata verir:
could not find implicit value for evidence parameter of type (this.Dogs.Value) => Ordered[this.Dogs.Value]
Bunu nasıl elde edebilirim ve sipariş vermeyi gerektiren jenerik yöntemlerde numaralandırma değerlerini nasıl kullanırım?
Teşekkürler @retronym, bu son örnek sorunumu çözdü, ancak zihnim zayıf tip kısıtlamalardan bükülüyor olsa da! Şu anda A, A'nın genelleştirilmesiyle sipariş edilen bir şey olarak kabul edilebilir (yani, ya da dönüştürülebilen) bir A tipi gerektirir. –