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