想了解我的第一個Scala應用程序中的某些錯誤後,我發現我的限制函數並不完全正常工作......完全沒有!如何在Scala中編寫限制函數?
因此,這裏是我的第一次嘗試:
def limit(x : Double, min: Double, max : Double) = {
if (x < min) min;
if (x > max) max;
x;
}
它總是返回x
!
我第二次嘗試是這樣的:
def limit(x : Double, min: Double, max : Double) : Double = {
if (x < min) return min;
if (x > max) return max;
x;
}
和它的工作。
所以我的問題:爲什麼min;
和max;
從第一個例子基本上沒有操作,而x;
是不是? 這是我第二次嘗試好斯卡拉?
我想知道是否可以做一個通用版本。感謝您發佈您的消息,我不知道「訂購」特質! – Chris 2011-06-01 10:37:06
注意這一點,即使是專業化,從類型類型'Numeric'和'Ordered'拉入隱式中綴操作符也會導致6倍速度下降。你最好使用'Ordering'通過命名隱式而不是上下文綁定,然後使用'Ordering.min'和'Ordering.max'方法 – 2011-06-01 17:40:10
@Kevin是的,這就是爲什麼NOTE註釋在我的代碼中;不幸的是,專業化並沒有真正的幫助,因爲'Ordering'和'Ordered'沒有專門化...... – Jesper 2011-06-01 18:53:45