在Scala中,有一种简便的方法将StateT $ (\s -> ((), s))
的值限制为给定的go
,这样,如果该值在Int
之外,则{{ 1}}返回了吗?
我可以编写一个函数来执行此操作,如下面的测试案例所示,但是我怀疑Range
类或我忽略的其他地方必须有某种方法。
Range
感谢您的时间。
答案 0 :(得分:3)
恐怕没有。 Range
旨在作为一个集合,而不是一个数学值,因此它提供了迭代和喜欢的方法。您的limit
函数看起来不错。您还可以考虑扩展(“拉皮条”)Range
类:
implicit class RangeOps(range: Range) {
def limit(n: Int) = {
(n max range.min) min range.max
}
}
(0 to 10).limit(15)
答案 1 :(得分:0)
这应该将n限制在1到10之间
def limit(n: Int): n.max(1).min(10)