質問: gets p input ``` これの出力結果は同じとあるのですが つまり、 getsは$stdin.getsの省略であり コードでどちらに置き換えても結果は全く同じ ということですか? 標準入出力についてまだまだ概念がつかめないので 回答お願いします
回答: レシーバー指定の無い`gets`は、Kernelモジュールのモジュール関数です。 参考: リファレンスにある通り、機能は`ARGF.gets`と同じです。 `ARGF`はコマンド実行時の引数が何もないと、`$stdin`を参照します。引数がある場合はそれをファイル名とみなして、そこから読みます。 詳しくは、 を参照してください。 ``` # filename: script.rb puts gets ``` は、 ``` ruby script.rb file1 ``` と起動した場合は、`file1`の1行目を表示します。 ``` ruby script.rb ``` と起動した場合は、標準入力から1行読んで、それを表示します。 ということで、 > > getsは$stdin.getsの省略であり > > > は、間違いです。