You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby程序使用When/Case语句意外返回Nil问题排查

Ruby代码返回nil问题排查与修复

问题根源

原代码的case语句完全用错了语法:

  • case your_message会将your_message与每个when后的表达式结果用===匹配,但你在when里写的是your_message == your_message.include?("?")这类布尔表达式,最终when的判断值是true或false。
  • 输入的字符串永远不可能等于true或false,所以所有分支都不会触发,方法默认返回nil。
  • 第二个when的!your_message == your_message.include?("?")逻辑也错误:!your_message会把非空字符串转为false,再和include?的结果比较,完全不符合需求。

修复后的代码

调整case的写法,直接在when中写条件判断(去掉case后的参数),同时调整分支顺序确保exit分支能被触发:

def stupid_coach(your_message)
  case
  when your_message.include?("?")
    p "Silly question, get dressed and go to work!"
  when your_message == "I am going to work now!"
    exit
  else
    p "I don't care, get dressed and go to work!"
  end
end

说明

  1. 去掉case后的your_message,此时when后直接写条件表达式,按顺序判断执行。
  2. 将exit分支提前,避免被else分支拦截。
  3. 用else处理所有不符合前两个条件的情况,替代原代码中错误的否定判断。

内容的提问来源于stack exchange,提问作者Panamaniac507

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 09:02:08