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