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

使用TTY-Prompt的multi_select方法出现预期外行为如何解决?

问题复现

首次尝试使用TTY-Prompt开发终端应用,测试如下代码时,预期用户从列表中选择「Create」选项后会输出「works」,但实际并未触发对应分支逻辑。

require 'tty-prompt'
def landing_page
    prompt = TTY::Prompt.new
    choices = ["Create", "Update", "Delete", "Quit"]
    answer = prompt.multi_select("Select", choices)
    case answer
        when choices[0]
            puts "works"
        else
            puts "doesn't work"
            sleep(1)
            self.landing_page
        end
    end

landing_page
问题根因
  • multi_select是TTY-Prompt的多选组件,返回值为包含所有用户选中项的数组,哪怕用户仅选中一个选项,返回值也是包裹该选项的数组结构,例如选中Create时返回["Create"]
  • 代码中case分支的匹配值是单个字符串"Create",数组和字符串类型不匹配,因此永远不会进入对应逻辑分支
解决方案

如果业务场景仅需要用户单选一个选项,将代码中的multi_select方法替换为select即可。select是单选组件,返回值为用户选中的单个字符串,和现有分支判断逻辑完全匹配。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:57:04