7

我想检查 my_number 是否在某个范围内,包括较高的值。

在 IF 语句中,我只需使用 "x > 100 && x <= 500"

但是在 Ruby 案例(开关)中我应该怎么做?

使用:

case my_number
when my_number <= 500
    puts "correct"
end

不起作用。

笔记:

标准范围不包括 my_number 正好为 500 的情况,并且我不想添加第二个“when”,因为我必须编写 double Content

case my_number
# between 100 and 500
when 100..500
    puts "Correct, do something"
when 500
    puts "Correct, do something again"
end
4

4 回答 4

7

它应该像你说的那样工作。以下case构造包含值 500。

case my_number
# between 100 and 500
when 100..500
    puts "Correct, do something"
end

所以:

case 500
  when 100..500
    puts "Yep"
end

将返回Yep

或者,如果值正好是500 ,您想执行单独的操作吗?

于 2013-04-17T16:24:49.327 回答
4
when -Float::INFINITY..0

会做的伎俩:)

于 2014-05-26T13:56:24.167 回答
1

你可以这样做:

(1..500).include? x

这也被称为member?.

于 2013-04-17T16:40:10.473 回答
0

这是一种根据需要case捕获的方法"x > 100 && x <= 500:封闭范围内的值,其中不包括起始值并包含结束值。此外,还显示了捕获之前和之后的范围。

case my_number
when ..100;         puts '≤100'
when   100..500;    puts '>100 and ≤500'
when        500..;  puts '>500'
end

说明:

  • 有一个末端的范围从-Infinity相应的开始。去Infinity。这是在 Ruby 2.6 中引入的
  • 范围x..y包括结束值,范围x...y不包括结束值。
  • 所有范围都包括起始值。when要创建没有起始值的范围的等价物,您可以在前面的情况中捕获起始值。这就是第二种when情况等同于您的"x > 100 && x <= 500eventhough的方式(100..500).include? 100。第三种情况类似。
于 2020-05-15T11:39:06.037 回答