あなたはこう言っています:
path.gets
でpath
あり、String
です。gets
にメソッドKernel
があります:
gets(sep=$/) → 文字列
gets(limit) → 文字列または nil
gets(sep,limit) → 文字列または nil
(または)$_
のファイルのリストから、またはコマンド ラインにファイルが存在しない場合は標準入力から次の行を返します (および に割り当てます)。ARGV
$*
String
にはKernel
viaが含まれてObject
いるため、gets
上記のメソッドは のインスタンス メソッドでもありますString
。しかし、Kernel#gets
プライベートなのでString#gets
プライベートであり、エラーがあります:
private method `gets' called for "file.txt":String (NoMethodError)
gets
他の場所で述べたように、あなたは電話をかけたいと思ってfile
います。
Kernel#gets
は、多くの (すべての?)メソッドと同様に、素早いワンライナーなどの単純な関数のようにKernel
扱うことができるようになっています。gets
のワンライナー性Kernel#gets
は、 に対して処理を行う理由でもあり$_
ます。
この回答は主に背景情報であるため、何が起こっているのかがわかります。彼らは正しく、最初に参加したので、Hckの答えを受け入れることをお勧めします。