似乎 Ruby IO#getc 在返回字符之前等待接收到\n。
如果您尝试运行此脚本:
STDOUT.sync = true
STDIN.sync = true
while data = STDIN.getc
STDOUT.puts "Char arrived"
end
对于发送到标准输入的每个字符,它将返回一个“Char arrived”,但仅在发送了\n 之后。
即使我写 STDIN.sync = true,似乎所有字符都被缓冲了。
有谁知道如何让脚本在一个字符发送到 STDIN 后立即打印“Char arrived”?
最佳答案
更新
此外,您还可以使用名为 highline 的 gem ,因为使用上面的例子可能会与奇怪的屏幕效果相关联:
require "highline/system_extensions"
include HighLine::SystemExtensions
while k = get_character
print k.chr
end
关于Ruby STDIN.getc 在接收时不读取字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8142901/