Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby中的整数范围_Ruby - Fatal编程技术网

Ruby中的整数范围

Ruby中的整数范围,ruby,Ruby,我是Ruby的新手,在阅读《Ruby指南》时遇到了一个问题: 这个表达式返回真值吗 2005..2009==2007 但是我不知道为什么我从下面的代码中得到这个警告消息 wishTraditional.rb:4: warning: integer literal in conditional range 代码: 而它返回睡眠,这是错误的,应该是Sias 顺便问一下,这两点是什么意思?我怎样才能找到更多关于它的信息呢?我想你最好使用这样的东西: elsif (2005..2009).includ

我是Ruby的新手,在阅读《Ruby指南》时遇到了一个问题:

这个表达式返回真值吗

2005..2009==2007

但是我不知道为什么我从下面的代码中得到这个警告消息

wishTraditional.rb:4: warning: integer literal in conditional range
代码:

而它返回睡眠,这是错误的,应该是Sias


顺便问一下,这两点是什么意思?我怎样才能找到更多关于它的信息呢?

我想你最好使用这样的东西:

elsif (2005..2009).include?(year)
以下是关于

更新:如果坚持使用===,则应将范围括在括号中:

elseif (2005..2009) === year

对于独立表达式,是的,您需要将范围文字放在括号中。 但是您的if/elsif链作为case语句会更清晰,它使用===进行比较:

def makTimeLine(year)
  case year
  when 1984
    "Born."
  when 2005..2009
    "Sias."
  else
    "Sleeping"
  end
end

谢谢Baramin,我只是自己想出来的,这在我跳过的前一章中有介绍。我不会再跳过这一章了!这是因为运算符优先级:
==
之前绑定…
def makTimeLine(year)
  case year
  when 1984
    "Born."
  when 2005..2009
    "Sias."
  else
    "Sleeping"
  end
end