为什么这个ruby case语句会给出意外的结果?
为什么下面的ruby代码返回“”而不是“代码为空”为什么这个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。然
因为您的代码正在将
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