2012-06-24 34 views

回答

2

我的猜測是鼓勵寫更有效的lteq,因爲所有其他方法回落到lteq。所以你不想創建一個Option,然後映射它。我寧願讓相反 - 這是爲什麼不會默認執行tryCompare,例如:

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 
} 

...你就不需要實施lteq時寫的醜override修改。來看

至於我可以看到tryCompare是永遠整個Scala的標準庫體內使用,所以也許它只是一個「左眼上」 ......

+0

從數學家的(就是我!)點,不管怎樣,讓'tryCompare'未實現的感覺更好,但同意如果你鼓勵人們編寫優化的代碼,那麼'lteq'是一個更好的替代候選者。 –

相關問題