为什么这个ruby case语句会产生意想不到的结果?

nol*_*oli 1 ruby

为什么以下ruby代码返回""而不是"Code is empty"?

code = ""
case code
when code.empty?
  "Code is empty"
else
  code
end
Run Code Online (Sandbox Code Playgroud)

Ed *_* S. 5

因为你的代码是比较codecode.empty?,即结果code == code.empty?,这是假的.字符串可以降级为布尔值,但显式相等'' == true将评估为false.