Ruby中能否用单条语句判断数字是否在指定区间内(无需重复变量x)
Ruby中无需重复指定变量x判断a < x < b的方法
当然有,Ruby提供了几种简洁的方式来实现你的需求,不用重复写变量x:
使用开区间(Range)的
include?方法
这是最直观的方式,对应你要的a < x < b逻辑,Ruby的开区间(a...b)(三个点,不包含右端点)正好匹配这个范围,直接调用include?即可判断:x = 4 a = 1 b = 10 (a...b).include?(x) # 返回 true如果需要的是
a ≤ x ≤ b的闭区间判断,就换成两个点的闭区间(a..b)。利用
between?方法(注意边界调整)
Ruby的数值类型都继承了Comparable模块的between?方法,它会判断目标值是否大于等于左边界且小于等于右边界。如果要实现严格的a < x < b,可以给边界做微小调整:x = 4 a = 1 b = 10 x.between?(a + Float::EPSILON, b - Float::EPSILON) # 返回 true这种方式适合处理浮点数场景,避免边界值误判。如果是整数场景,也可以直接写成
x.between?(a+1, b-1),但要注意确保a+1 <= b-1,否则会返回false。自定义链式比较语法(不推荐生产环境)
如果你非常想要类似a < x < b的写法,可以给Numeric类添加一个自定义方法,不过这种方式会覆盖原有的<运算符,可能引发意外问题,仅适合个人脚本使用:class Numeric def <(other) return ->(val) { val > self && val < other } if other.is_a?(Numeric) super end end # 使用方式 x = 4 a = 1 b = 10 (a < b)[x] # 返回 true
内容的提问来源于stack exchange,提问作者Aaron Thomas
相关产品推荐
相关产品推荐

