2012-06-24 3 views

Odpowiedz

2

Przypuszczam, że należy zachęcać do pisania bardziej skutecznych lteq, ponieważ wszystkie inne metody cofają się do lteq. Więc nie chciałbyś stworzyć Option, a potem go zmapować. Wolę zapytać odwrotnie - dlaczego nie jest tryCompare realizowany domyślnie np .:

def tryCompare(x: T, y: T) = { 
    val p1 = lteq(x, y) 
    val p2 = lteq(y, x) 
    if (p1) { 
    if(p2) Some(0) else Some(-1) 
    } else if (p2) Some(1) else None 
} 

... i nie musiałby napisać brzydkie override modyfikator przy wdrażaniu lteq.

O ile widzę tryCompare jest nigdy używany w całym Scala ciała bibliotece standardowej, więc może to po prostu „left-over” ...

+0

Od matematyków (to ja!) Punkt widzenia , jakoś przyjemniej jest pozostawić "tryCompare" niezaimplementowane, ale zgadzam się, że jeśli zachęcasz ludzi do pisania zoptymalizowanego kodu, to 'lteq' jest lepszym kandydatem do zastąpienia. –