せかいや

いまいるここを、おもしろく http://sekai-in-the-box.appspot.com/

【Ruby】printメソッドに引数を渡さなくても出力できる理由。 グローバル変数$_

 
IO#gets、readline は読み込んだ文字列を変数 $_ にセットする。
printは引数が省略されると$_ を使う。
 →p puts は$_ を使わない模様。

p $_   #<=nil  $_の値のセットはget(readline)実行後
while DATA.gets do
  p $_ 
  print #<= 引数なしだと$_を出力
end
__END__
hoge
huge

 
■実行結果

nil
"hoge\n"
hoge
"huge\n"
huge
"\n"