我正在使用鞋库运行一段ruby代码并发现它将它作为文件输入运行的ruby代码处理,因此不允许我再获取STDIN(因为ARGF允许文件)输入OR STDIN,但显然不是两者兼而有之。)
无论如何都要覆盖这个?我告诉perl,例如,一旦IO缓冲区为空,就允许你从STDIN读取。
编辑:
我在" - "取得了一些成功。特殊文件名字符,显然是在命令行上切换到STDIN的信号。
以前的问题形式:鞋子ARGF是否破损?
使用常规Ruby,我可以使用ARGF读取文件或标准输入。有了Shoes,我只能读取文件。刚刚标准的任何内容都会被忽略。它是否符合标准,或者是否有其他方式可以访问它?
示例代码行:可以单独存放在ruby文件中,也可以单独存放在鞋子中的Shoes应用程序中。
#ruby testargf.rb aus.txt is the same as ruby testargf.rb<aus.txt
#but isn't in shoes. shoes only prints with the first input, not the second
ARGF.each do |line| #readLine.each has same result
puts line
end
或穿鞋:
#shoes testargfshoes.rb aus.txt should be the same as <aus.txt but isn't.
Shoes.app(title: "File I/0 test",width:800,height:650) do
ARGF.each do |line| #readLine.each has same result
puts line
para line
end
end
回想起来,我也看到了Shoes和Ruby之间的进一步区别:Shoes还打印出我正在运行的程序的源代码,以及我传递的任何文件。如果我尝试输入标准文件,只打印源代码。
我想这意味着鞋子应用程序将我的程序作为输入,然后在将输入传递给我的代码时不进行消毒(或任何正确的单词)输入。这似乎加强了我的&#34; Shoes eats Standard In&#34;假设,因为它显然是使用标准的In。我想它可以连续两个文件,但不是一个文件,然后是标准的参考。
如果我将文件输入和STDIN与:
混合,我可以确认Ruby without Shoes提供相同的行为ruby testargf.rb aus_simple.txt < testargf.rb
答案 0 :(得分:0)
我在&#34; - &#34;取得了一些成功。特殊文件名字符,显然是在命令行上切换到STDIN的信号。
使用示例:
shoes testargfshoes.rb - <aus_simple.txt
不要通过&#34; - &#34;没有通过任何标准的In,让它挂起。