gpt4 book ai didi

ruby - 使用ARGF时如何使用STDIN?

转载 作者:太空宇宙 更新时间:2023-11-03 16:56:53 24 4
gpt4 key购买 nike

我想创建一个脚本,我可以通过管道将列表输入:cat list | ruby script.rb 我知道我可以通过使用 ARGF 来做到这一点并且它有效。但话又说回来,我想遍历每一行并根据决定对其执行一些操作。但是当我使用 STDIN.gets 时,我什至不会在输入内容时被要求输入。

这是我现在拥有的

#!/usr/bin/env ruby
# encoding: utf-8

items = []

ARGF.each_with_index do |line, index|
items << line
end

items.each_with_index do |item, index|
puts "What to do with #{item}? (1,2,3)"
case STDIN.gets
when 1
puts "one"
when 2
puts "two"
when 3
puts "three"
end
end

感谢您给我指明正确方向的任何提示。

最佳答案

在阅读和浏览 Ruby-Docs 一段时间后,我找到了一种方法。我需要打开一个新的 IO-Stream,因为 ARGF 已关闭,正如 cam 指出的那样。

#!/usr/bin/env ruby

ARGF.each_with_index do |line, index|
puts "#{index}: #{line}"
end

fd = IO.sysopen("/dev/tty", "w+")
IO.open(fd, "w+") do |io|
puts "Enter something:"
puts "You entered: #{io.gets}"
end

可能不是最佳实践,但现在对我有用,不应成为本主题的主题。

关于ruby - 使用ARGF时如何使用STDIN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7387316/

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