想了解我的第一个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