Raku中Range在布尔上下文中是否可能被求值为False?
Ruby中Range在布尔上下文求值为False的场景
你观察到元素个数为0的Range(比如^0或1..0)在布尔上下文返回True是正确的——Ruby里绝大多数对象默认都是真值,只有nil和false本身是假值,但Range存在特殊场景:
- 当Range是通过
Range.new创建、且起始值和结束值都为nil的空范围时,在布尔上下文会被求值为False,示例代码:Range.new(nil, nil).so # 输出 False - 在Ruby 1.8.x等旧版本中,空Range曾被视为假值,但现代Ruby(2.0及以上版本)已调整规则,仅上述完全未定义起止的Range才会返回
False。
需要注意的是,像1..0、^0这类起止明确但区间无效的空Range,依然会被判定为真值,只有完全没有定义起止边界的Range才会是假值。
内容的提问来源于stack exchange,提问作者Daniel Mita
相关产品推荐
相关产品推荐

