gpt4 book ai didi

ruby - Windows 'choice' 命令搞乱了 Ruby 'gets' 方法

转载 作者:可可西里 更新时间:2023-11-01 13:27:24 26 4
gpt4 key购买 nike

打开irb

  1. 键入 gets。它应该可以正常工作。
  2. 然后尝试 system("choice/c YN") 它应该按预期工作。
  3. 现在再次尝试 gets,它的行为很奇怪。

谁能告诉我这是为什么?

编辑:为了澄清“奇怪”的行为,它允许我输入 gets,但不显示字符,我必须按两次回车键。

最佳答案

终端输入输出处理是一门黑暗而神秘的艺术。任何试图通过 ssh 使 bash 的彩色输出在 Windows PowerShell 中工作的人都知道这一点。 (各种快捷键习惯,如 Ctrl+Backspace 只会让事情变得更糟。)

出现问题的可能原因之一是特殊字符处理。那里的每个终端都可以以多种不同模式键入字符,并且它解析自己的输出以搜索特定字符序列以切换状态。

here可以找到 ANSI 转义码序列,这是不同类型终端可能支持的标准之一。

看到 Esc[5;45m 了吗?这将使以下所有输出在洋红色背景上闪烁。那里还有更多类似的东西。

因此,从字面上看,您的问题的答案是 — 您的 choice 命令使用特殊的转义序列将输出模式搞得一团糟,而 ruby​​ 在终端操作的这种古怪的特殊模式中得到了突破。

但更有用的是指向 HighLine gem documentation 的链接.当可以使用 about 12 LOC 实现相同的行为时,为什么人们可能想要实现特定于平台的和突兀的行为? ? 所有对 Gist 的尊重都归于 botimer,我只是使用搜索偶然发现了他的代码。

关于ruby - Windows 'choice' 命令搞乱了 Ruby 'gets' 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10978037/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com