1

给一个整数,如果它在某个范围的边界内x,我想返回。x如果不是,则返回它违反的边界的值。

def keepWithinRange(x:Int, min:Int, max:Int) : Int = {
  if (x < min) return min;
  if (x > max) return max;
  return x;
}

有没有更优雅的方法来做到这一点?

4

2 回答 2

10

我会这样写:

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在 Scala 中用于控制流更惯用。

于 2012-10-30T19:53:24.617 回答
3

您可以使用 RichInt 中的 max 和 min 方法:

def keepWithinRange(x:Int, minVal:Int, maxVal:Int) = x max minVal min maxVal
于 2012-10-30T20:28:19.833 回答