当我尝试在 case 语句中匹配字符串 '3' 时,它匹配范围是否达到 '9',而不是 '10'。
我猜它与三重等号运算符有关,但我不知道它可以在范围内但不匹配的确切原因。
这是一个 IRB 运行,记录了有效(使用“9”)和不起作用(使用“10”)的两种情况:
case '3'
when ('0'...'9')
puts "number is valid"
else
puts "number is not valid"
end
Run Code Online (Sandbox Code Playgroud)
输出: number is valid
case '3'
when ('0'...'9')
puts "number is valid"
else
puts "number is not valid"
end
Run Code Online (Sandbox Code Playgroud)
输出: number is not valid
我用作预期结果参考的方法是
Enumerable#include?
Enumerable#member?
,查看转换为数组时输出的内容是 ( Enumerable#to_a)。
“大小写相等” ( ===) 运算符的结果让我感到惊讶。
case '3'
when ('0'...'10')
puts "number is valid"
else
puts "number is not valid"
end
Run Code Online (Sandbox Code Playgroud) ruby ×1