私は靴のライブラリを使ってルビコードを実行しており、ファイル入力として実行しているRubyコードを処理しているので、STDINをもう使用できないことを発見しました(ARGFはファイル入力またはSTDINを許可しています両方ではない)。ARGFからファイル入力とSTDINの両方を取得していますか?
これをオーバーライドする方法はありますか?私はperlと言っています。例えば、IOバッファが空になったらSTDINから読み込むことができます。
編集:
私はといくつかの成功を持っていた「 - 」明らかに、コマンドラインでSTDINに切り替える信号である特別なファイル名の文字を、。
前の質問:シューズARGFが壊れていますか?
一般的なRubyを使用して、ファイルまたはStandard InをARGFで読み取ることができます。靴では、私はファイルを読むことしかできません。単に標準からのものは無視されます。それは標準で食べているのですか、それにアクセスする別の方法がありますか?
コード行の例:ルビーファイルに単独で、または靴の靴アプリ内に単独で使用できます。
#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
振り返ってみると、私はまた、靴とRubyの間にさらに差を見ています。また、任意と一緒に、私が実行しているプログラムのソースコードを出力シューズ私が渡すファイル標準入力にファイルを入力しようとすると、ソースコードのみが出力されます。
これは、靴アプリが自分のプログラムを入力として受け取り、それを自分のコードに渡すときに入力を墨塗りしない(または正しい単語があればどんなものでもない)ことを意味します。これは明らかに何かのために標準Inを使用しているので、私の "Shoes Inats Standard In"仮説を強化するようです。私はそれが行の2つのファイルを取ることができますね、しかし、その後はない一つのファイルと内標準を参照する
私は私がファイル入力とSTDINを混ぜる場合は靴なしでRubyが同じ動作を提供していることを確認することができます。
ruby testargf.rb aus_simple.txt < testargf.rb
実行可能な例を教えてください。 – Stefan
はい。編集された質問を参照してください。 – Jenny
'do'の後ろにスペースがあり、2つのスペースを使ってインデントしてください。 –