为什么这个ruby case语句会给出意外的结果?

为什么这个ruby case语句会给出意外的结果?,ruby,Ruby,为什么下面的ruby代码返回“”而不是“代码为空” 因为您的代码正在将code与code.empty?进行比较,即code==code.empty?的结果为false。字符串可以降级为布尔值,但显式等式'==true将计算为false,因为您的代码将code与code.empty?进行比较,即code==code.empty?的结果为false。字符串可以降级为布尔值,但显式等式'==true将计算为false表达式code.empty?是调用方法empty?的方法调用,该方法返回值true。然

为什么下面的ruby代码返回“”而不是“代码为空”


因为您的代码正在将
code
code.empty?
进行比较,即
code==code.empty?
的结果为false。字符串可以降级为布尔值,但显式等式
'==true
将计算为
false

,因为您的代码将
code
code.empty?
进行比较,即
code==code.empty?
的结果为false。字符串可以降级为布尔值,但显式等式
'==true
将计算为
false
表达式
code.empty?
是调用方法
empty?
的方法调用,该方法返回值
true
。然后使用表达式
true===code
,将
true
值与
code
变量进行比较,该表达式为false,因此它执行
else
代码块

这可能是您想要的:

case code
when ""
  "Code is empty"
else
  code
end
更简单的方法是使用三元运算符:

code.empty? ? "Code is empty" : code

表达式
code.empty?
是调用方法
empty?
的方法调用,该方法返回值
true
。然后使用表达式
true===code
,将
true
值与
code
变量进行比较,该表达式为false,因此它执行
else
代码块

这可能是您想要的:

case code
when ""
  "Code is empty"
else
  code
end
更简单的方法是使用三元运算符:

code.empty? ? "Code is empty" : code