gpt4 book ai didi

scala - 是否有将 Int 限制为范围的内置函数?

转载 作者:行者123 更新时间:2023-12-04 15:54:12 26 4
gpt4 key购买 nike

在 Scala 中,是否有优雅的方式将 Int 值限制在给定的 Range 范围内,这样如果该值超出了 Range 返回 Range 中最接近的值?

我可以编写一个函数来执行此操作,如下面的测试用例所示,但怀疑 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))
}

}

最佳答案

恐怕没有。 Range 旨在作为一个集合,而不是作为一个数学值,因此它提供了迭代等方法。您的 limit 函数看起来不错。您还可以考虑扩展(“拉皮条”)Range 类:

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

(0 to 10).limit(15)

关于scala - 是否有将 Int 限制为范围的内置函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52786265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com