Ruby 式で、レシーバーのa.fooメソッドを呼び出します。呼び出しが成功するかどうかに影響する条件は次のうちどれですか?fooa
afoo メソッドに応答します。aのクラス、またはそのスーパークラスまたは含まれるモジュールの 1 つが、foo メソッドを処理する方法で method_missing を実装します。aクラス自体ではなく、クラスのインスタンスです。a正しいタイプがあります。
Ruby 式で、レシーバーのa.fooメソッドを呼び出します。呼び出しが成功するかどうかに影響する条件は次のうちどれですか?fooa
afoo メソッドに応答します。aのクラス、またはそのスーパークラスまたは含まれるモジュールの 1 つが、foo メソッドを処理する方法で method_missing を実装します。aクラス自体ではなく、クラスのインスタンスです。a正しいタイプがあります。指定されたオプションから、呼び出しが成功するかどうかに影響を与える次の条件
- a responds to the foo method.
- a's class, or one of its superclasses or included modules, implements
method_missing in a way that handles the foo method.
まず、すべてのオブジェクトは何らかのクラスのインスタンスです。クラス自体はクラスのインスタンスであり、ClassクラスClass自体はクラスのサブクラスですModule。
すべてのオブジェクトは、そのクラスまたはシングルトン クラス (オンザフライでメソッドを追加すると自動的に作成される) によって定義されたインスタンス メソッド、およびすべての祖先クラス/モジュールに応答します。およびすべての祖先 (モジュールを含む)。
送信されたメソッドにオブジェクトが応答しない場合、メソッドがオブジェクトに対して定義 method_missingされていれば、そのオブジェクトが実行されます。
ここでは、呼び出しが成功することを保証するものは何もありません。メソッドまたはライブラリは、元のメソッドまたはmethod_missing.
また、パブリック メソッド、プロテクト メソッド、プライベート メソッドの違いにも注意してください (プライベート メソッドとプロテクト メソッドには、それらを呼び出すことができるユーザーに制限があります)。