ストリームを指定せずにgets
を呼び出すときに、私たちはKernel#getsを呼び出していると、ストリームが指定されているときに我々は、私はボンネットの下にIO#gets
周りKernel#gets
ラップを信じているが、それはIOオブジェクトを作成する必要がある前IO#gets
を呼び出すこと、 IOオブジェクトはすべてのコマンドライン引数(ARGV)を連結します(1つのファイルを順番にファイルとしてオープンしようとします)。 ARGVに要素が残っていない場合は、stdinから読み込みます。
挙動は、この単純なスニペットを使用してテストすることができる:
は
while gets
puts $_
end
パラメータなしruby myscript.rb
を実行している、それが作品を意志、パラメータが指定されている場合、それはファイルとして開き、それから読み取るしようと、標準入力読み込みますcat
コマンドと同様です。ソケット使用
stream = File.open('/etc/passwd','r')
puts stream.gets
stream.close
シンプルなHTTPクライアント::!
require 'socket'
s = TCPSocket.new 'icanhazip.com',80
s.puts <<~EOF
GET/HTTP/1.1
Host: icanhazip.com
EOF
while line = s.gets
puts line
end
s.close
More about Kernel#gets here
More about IO#gets
をああ、私がいることを見つけるストリームがtty、ソケット、ファイルなどをすることができることを
gets.chompも使える!!だから、$ stdinが今のところ@@ – shinyMao