小编joc*_*ode的帖子

为什么字符串 '3' 在范围为 ('0'...'10') 的 case 语句中不匹配?

当我尝试在 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

34
推荐指数
2
解决办法
1745
查看次数

标签 统计

ruby ×1