1

integerを指定します。ある範囲の境界内にある場合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 に答える