問題タブ [eigenclass]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - 非常に似ているのに、固有クラスが self.class と同等ではないのはなぜですか?
どこかでメモを忘れていました。説明していただければ幸いです。
オブジェクトの固有クラスが と異なるのはなぜself.class
ですか?
固有クラスを同等とみなす私の一連のロジックclass.self
はかなり単純です。
class << self
インスタンスメソッドではなく、クラスメソッドを宣言する方法です。へのショートカットdef Foo.bar
です。
したがって、クラス オブジェクトへの参照内では、戻り値self
は と同じである必要がありますself.class
。これは、クラスのメソッド/属性の定義にclass << self
設定さself
れるためです。Foo.class
私はただ混乱していますか?それとも、これは Ruby メタプログラミングの卑劣なトリックですか?
ruby-on-rails - Rubyの「self.method_name」と「class << self」の違い
クラスのインスタンス化を(シングルトンを使用せずに)単一のものに制限しようとしていましたが、できませんでした。クラス変数 (@@) を試してみましたが、うまくいきませんでした。私はそれをグーグルで検索し、これに出くわしました:
'class << self ' の説明を検索して、より良い (または単純でクリーンな) ものを見つけようとしましたが、うまくいきませんでした。最後に、いくつかのテストの後、 「class << self 」は、クラスメソッドを定義できる単なるブロック ラッパーであると結論付けました。それで、これは正しいですか?
よろしく!
ruby - Rubyクラスの質問
重複の可能性:
クラス<<Rubyの自己イディオム
Rubyについて簡単に質問します。私はJava/cのバックグラウンドを持っているので、Rubyでは、インスタンスメソッド内で参照される「self」が「this」のように機能することを理解しています。そして「自己」。メソッドのプレフィックスは、クラスメソッドとして定義します。
しかし、これはここでどういう意味ですか?
ruby - Ruby クラス メソッドと Eigenclasses のメソッド
クラスのメソッドとそのクラスの固有クラス (またはメタクラス) のメソッドは、1 つのことを定義する 2 つの方法にすぎませんか?
そうでなければ、違いは何ですか?
何らかの方法で異なる行動をしますX.a
か?X.b
固有クラスを開くことで、クラス メソッドを上書きまたはエイリアスできることを認識しています。
ruby - モジュールからクラスの特定のインスタンスにメソッドを動的に追加する
取り決めは次のとおりです。クラス Box の特定のインスタンスをいくつかのメソッドで拡張する必要があります。モジュール内にライブを含める必要があるメソッドと、Box インスタンスにモジュールを動的に含めることができるようにしたい。今、私はevalでフックを使用しています:
それは非常にうまく機能していますが、evalを使用すると本当に汚いと感じます。私はそのようなものを探しています:
しかし、次のようにクラスにモンキーパッチを適用しないと、固有クラスにclass_evalを実行させることができません。
これを行うための美しい(そして信頼できる)方法はありますか?
ruby - Rubyの匿名クラス
2つの質問があります:
- メソッド
f_1
はメタクラス匿名クラスに属していますか? - メソッド
f_2
は匿名クラスに属していますか?
次のコードに関連しています。
ruby-on-rails - Ruby でメタプログラミングと固有クラスについて学ぶことが重要なのはなぜですか?
私は現在、Ruby と Rails の実験を行っており、メタプログラミングに関するチュートリアルや書籍のいくつかのセクションにアクセスしました。これは Ruby の不可欠なコンポーネントであると多くの人が言及していますが、詳細には触れていません。あたかも Ruby プログラマーにとってメタプログラミングが最後のフロンティアであるかのようです。.NET のバックグラウンドを持っているため、なぜこれが有用であると思われるのか理解に苦しんでいます。
- メタプログラミングを使用すると、どのような利点が得られますか?
- 固有クラスとは何ですか? シングルトンとはどう違うのですか?
- どのような状況でメタプログラミングを使用するのが一般的ですか?
- コードを使用して他のコード、特に自分のものではないコードの動作を変更することには、どのような倫理的影響がありますか?
ruby - Rubyですべての固有クラスを取得することは可能ですか?
Ruby では、すべてのモジュールのリストを取得するのは簡単です。
しかし、すべての固有クラス (シングルトン クラスまたはメタクラスとも呼ばれます) のリストを取得することは可能ですか? それとも、固有クラスは見えませんか?
私は試した
スクリプト内で定義されているすべてのメソッドをリストしたいので、固有クラスを取得しようとしています。モジュールとクラスによって定義されたすべてのインスタンス メソッドを探してから、モジュールとクラス (または、CPU をかみ砕く必要がある場合はすべてのオブジェクト) のシングルトン メソッドを探すことができますが、それは少しハックに思えます。