注1:
コードには変数、クラス、メソッドが含まれており、これらを総称して言語構造と呼びます。
概要:
インスタンス メソッドはクラスから継承され、インスタンス変数はオブジェクト自体に存在します。
クラスとオブジェクトはどちらも Ruby のファーストクラスの値です。
応用例:
個別に出力
注2: 動的通話
メソッドを呼び出すと、実際にはオブジェクトにメッセージが送信されます。
結果:
ドット表記の代わりに object#send() を使用して、MyClass#my_method() メソッドを呼び出すことができます。
どのメソッドを呼び出すかを動的に決定できる技術をDynamic Dispatchと呼びます。
注 3: シンボルと文字列の違い
1. シンボルは不変であり、文字列内の文字は変更できます。
2. シンボルに対する操作が高速化されます。
3. 通常、物の名前を表すには記号が使用されます。
例:
注4: 動的定義
Module#define_method() メソッドを使用してメソッドを定義します。
結果: 30<font face="Courier New"></font>
<br>
注5:
クラスメソッドの本質は、クラスがオブジェクトであり、クラス名が定数であるということです。クラスのメソッドを呼び出すことは、オブジェクトのメソッドを呼び出すことと同じです:
クラス メソッドの本質は、クラスのシングルトン メソッドであるということです。
クラスマクロ
Ruby オブジェクトには属性がありません。属性は模倣メソッドを使用して定義できます。
アクセサーを定義する Module#attr_*() メソッドのメンバー。マクロはキーワードではなくメソッドです。
固有クラス
シングルトンメソッドは、従来のメソッドに従って、祖先チェーンの中で保存できない場所を探します。obj は保存できないオブジェクトであり、それ以外の場合は、すべてのインスタンスでこのメソッドを共有できます。
オブジェクトには、オブジェクトの固有クラスと呼ばれる固有の非表示クラスがあります。
eigenclass スコープを入力してください:
付録:
クラス変数、インスタンス変数、クラスメソッド、インスタンスメソッドの違い
@@ _
@
self(?clas,::).method : クラスメソッド
メソッド : インスタンスメソッド
リーリー