Ruby Ranges,为什么小数包含在独家范围内?

时间:2013-12-03 12:23:21

标签: ruby

case something
  when 0...10
    puts 'success'
  else
    puts 'fail'
end

如果输入9.5,则输出为“成功”。据我所知,...意味着10将不包括在内,所以它从0到9?这里发生了什么?另外,这个带有这个例子的书(我修改了它不是为了复制代码)建议在case语句中使用独占范围,这被认为是最佳实践吗?

1 个答案:

答案 0 :(得分:3)

0...10表示10未包含在范围内。但这也意味着包含10(但大于0)的所有内容。

使用...代替..不会更改范围的结尾:

(0..10).end
# => 10
(0...10).end
# => 10

它修改了此范围内的结尾:

(0..10).exclude_end?
# => false
(0...10).exclude_end?
# => true

有关Ruby中范围的更多信息: http://ruby-doc.org/core-2.0.0/Range.html