Raku中空Range判定为True:该现象是Bug还是特性?
结论:这是Raku的设计特性,而非Bug
在Raku中,so操作符的作用是判断一个值是否为非Nil——只要是实际存在的对象,无论它内部是否包含元素,so都会返回True。
对于1..0这个空Range来说:
- 它是一个合法的Range对象,并非Nil值,所以
so 1..0返回True完全符合语言规则。 - 如果需要判断Range是否为空(即没有包含任何元素),应该使用Range的
.is-empty方法,比如:say so 1..0.is-empty; # 输出 True
简单来说:Raku中对象的布尔值代表“对象是否存在”,而非“对象是否包含内容”,这是语言设计时明确的特性。
内容的提问来源于stack exchange,提问作者mscha
相关产品推荐
相关产品推荐

