Scala 是否有内置函数将Int限制在某个范围内?

Scala 是否有内置函数将Int限制在某个范围内?,scala,Scala,在Scala中,是否有一种优雅的方法将Int值限制在给定的范围内,这样,如果该值在范围外将返回范围内最接近的值 我可以编写一个函数来实现这一点,如下面的测试用例中所示,但我怀疑Range类或我忽略的其他地方一定有某种方法 import org.scalatest.FunSuite class RangeTest extends FunSuite { test("Range Experiments") { val range = 1 to 10 def limit(n: I

在Scala中,是否有一种优雅的方法将
Int
值限制在给定的
范围内
,这样,如果该值在
范围外
将返回
范围内最接近的值

我可以编写一个函数来实现这一点,如下面的测试用例中所示,但我怀疑
Range
类或我忽略的其他地方一定有某种方法

import org.scalatest.FunSuite
class RangeTest extends FunSuite {

  test("Range Experiments") {
    val range = 1 to 10

    def limit(n: Int) = (n max range.min) min (range.max) // Yuk!

    assert(1 === limit(-1))
    assert(1 === limit(0))
    for (i <- range)
      assert(i === limit(i))
    assert(10 === limit(11))
    assert(10 === limit(12))
  }

}
import org.scalatest.FunSuite
类RangeTest扩展了FunSuite{
测试(“靶场实验”){
val范围=1到10
def限制(n:Int)=(n max range.min)min(range.max)//Yuk!
断言(1==限制(-1))
断言(1==限制(0))

对于(i<p)恐怕没有。<代码>范围<代码>是一个集合,而不是一个数学值,因此它提供了迭代和喜欢的方法。您的<代码>限制>代码>函数看起来不错。您也可以考虑扩展(“pimpun”)<代码>范围< /Cord>类:

implicit class RangeOps(range: Range) {
  def limit(n: Int) = {
    (n max range.min) min range.max
  }
}

(0 to 10).limit(15)

这应该将n限制在1到10之间

def limit(n: Int): n.max(1).min(10)

顺便说一句:在其他语言中,此操作通常称为
clamp
,您可能希望为此匹配您的名称,也可能需要研究其他语言的API以匹配您的名称。