実際には、.
の自動補完機能があります。完了オプションは、オブジェクトの#methods
を呼び出すことによって見つかります。あなたはObject.methods
をオーバーライドすることにより、自分自身のためにこれを見ることができます:
>> def Object.methods; ["foo", "bar"]; end
=> nil
>> Object.[TAB]
Object.foo Object.bar
>> Object.
注.
の左側の式がリテラルである場合にのみ動作すること。それ以外の場合は、#methods
を呼び出すようにオブジェクトを取得すると、副作用を伴う可能性のある左側を評価する必要があります。あなたにも自分のためにこれを見ることができます:
[continuing from above...]
>> def Object.baz; Object; end
=> nil
>> Object.baz.[TAB]
Display all 1022 possibilities? (y or n)
我々はObject
自身を返すObject
に方法#baz
を追加します。次に、自動完成してObject.baz
で呼び出すことのできるメソッドを取得します。 IRBがObject.baz.methods
と呼ばれる場合は、Object.methods
と同じことになります。代わりに、IRBには1022件の提案があります。私は彼らがどこから来たのかは分かりませんが、それは実際に文脈に基づいていない一般的なリストです。
::
演算子は、モジュールの定数を取得するためにも使用されますが、.
はそうではありません。だから、は、完了時にNet::
に表示されますが、Net.
は表示されません。 Net.HTTP
は正しくありませんが、Net::HTTP
はです。