You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 00:37:02