1
舉一個整數x
,我想返回x
如果它是某一範圍的邊界之內。如果不是,則返回違反邊界的值。剪輯編號斯卡拉
def keepWithinRange(x:Int, min:Int, max:Int) : Int = {
if (x < min) return min;
if (x > max) return max;
return x;
}
有沒有更好的方法來做到這一點?
舉一個整數x
,我想返回x
如果它是某一範圍的邊界之內。如果不是,則返回違反邊界的值。剪輯編號斯卡拉
def keepWithinRange(x:Int, min:Int, max:Int) : Int = {
if (x < min) return min;
if (x > max) return max;
return x;
}
有沒有更好的方法來做到這一點?
我會這樣寫:
def keepWithinRange(x: Int, min: Int, max: Int) = math.max(min, math.min(max, x))
或者這樣:
def keepWithinRange(x: Int, min: Int, max: Int) =
if (x < min) min else if (x > max) max else x
要麼比使用return
在斯卡拉控制流更地道。
您可以使用最大值和最小值方法從RichInt:
def keepWithinRange(x:Int, minVal:Int, maxVal:Int) = x max minVal min maxVal
這是一個情況下,我不認爲管道符符號有助於可讀性(使用'RichInt'方法花費一對夫婦的創建包裝對象)。 –
@Travis'一個最大B'具有完全相同的運行時間爲'math.max(A,B)',我的機器上至少。不確定編譯器或運行時優化。 –
@Luigi:您使用的是2.10? – Arjan