如何让Ruby交互式REPL显示连续命令的所有执行结果?
让Ruby irb显示所有表达式执行结果的配置方法
有两种常用方式可以实现让irb显示每一行表达式的执行结果:
方法一:修改irb全局配置文件
编辑用户目录下的.irbrc文件(如果没有就新建一个),添加以下代码:
# 自定义提示符(可选,保持默认也可正常运行) IRB.conf[:PROMPT][:CUSTOM] = { :PROMPT_I => ">> ", :PROMPT_N => "| ", :PROMPT_S => "%l> ", :PROMPT_C => "| ", :RETURN => "=> %s\n" } IRB.conf[:PROMPT_MODE] = :CUSTOM # 重写求值逻辑,自动输出每个表达式结果 module IRB class Context def evaluate(line, line_no, exception: nil) value = super # 跳过空行,避免无效输出 unless line.strip.empty? puts IRB.conf[:PROMPT][IRB.conf[:PROMPT_MODE]][:RETURN] % value.inspect end value end end end
保存后重启irb,后续每一行表达式的结果都会自动显示。
方法二:启动irb时使用--echo选项
无需修改配置,直接在终端执行以下命令启动irb:
irb --echo
进入irb后,每执行一行表达式都会立即输出结果,示例如下:
>> a = "hello" => "hello" >> b = "world" => "world" >> a => "hello" >> b => "world"
这种方式适合临时需要该功能的场景,不会影响全局配置。
如果只是偶尔查看单行结果,也可以用p方法手动输出,比如p a,但这不属于自动配置范畴。
内容的提问来源于stack exchange,提问作者stevec
相关产品推荐
相关产品推荐

