我正在阅读为什么指南,并在并排尝试红宝石终端中的一些命令。有一点不匹配。我正在运行Ruby 1.9.3。
在书中它说有效的命令是:
if 1890..1913 === 1895
echo "works"
end
然而,当我这样做时,它只是给了我
warning: (irb):27: warning: integer literal in conditional range
=> nil
一些更有趣的实验
1895..1913 === 1895
> ArgumentError: bad value for range
from (irb):31
from /usr/bin/irb:12:in `<main>'
x = 1895..1913
x === 1895
> true
这很有趣,因为(来自python)我会认为最后两次执行是相同的,但是,似乎并非如此。我想知道是否有人能够更深入地了解为什么所有这些实验都失败了,以及===如何运作。
答案 0 :(得分:12)
1895..1913 === 1895
与1895..(1913 === 1895)
相同,您想要的是(1895..1913) === 1895
。
答案 1 :(得分:0)
这里的问题似乎是括号 Ruby无法正确猜测它应如何评估该行。
以下作品例如:
(1895..1913) === 1895