問題タブ [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.

0 投票する
3 に答える
16151 参照

ruby - 非常に似ているのに、固有クラスが self.class と同等ではないのはなぜですか?

どこかでメモを忘れていました。説明していただければ幸いです。

オブジェクトの固有クラスが と異なるのはなぜself.classですか?

固有クラスを同等とみなす私の一連のロジックclass.selfはかなり単純です。

class << selfインスタンスメソッドではなく、クラスメソッドを宣言する方法です。へのショートカットdef Foo.barです。

したがって、クラス オブジェクトへの参照内では、戻り値selfは と同じである必要がありますself.class。これは、クラスのメソッド/属性の定義にclass << self設定さselfれるためです。Foo.class

私はただ混乱していますか?それとも、これは Ruby メタプログラミングの卑劣なトリックですか?

0 投票する
4 に答える
3006 参照

ruby-on-rails - Rubyの「self.method_name」と「class << self」の違い

クラスのインスタンス化を(シングルトンを使用せずに)単一のものに制限しようとしていましたが、できませんでした。クラス変数 (@@) を試してみましたが、うまくいきませんでした。私はそれをグーグルで検索し、これに出くわしました:

'class << self ' の説明を検索して、より良い (または単純でクリーンな) ものを見つけようとしましたが、うまくいきませんでした。最後に、いくつかのテストの後、 「class << self 」は、クラスメソッドを定義できる単なるブロック ラッパーであると結論付けました。それで、これは正しいですか?

よろしく!

0 投票する
4 に答える
293 参照

ruby - Rubyクラスの質問

重複の可能性:
クラス<<Rubyの自己イディオム

Rubyについて簡単に質問します。私はJava/cのバックグラウンドを持っているので、Rubyでは、インスタンスメソッド内で参照される「self」が「this」のように機能することを理解しています。そして「自己」。メソッドのプレフィックスは、クラスメソッドとして定義します。

しかし、これはここでどういう意味ですか?

0 投票する
4 に答える
4289 参照

ruby - Ruby クラス メソッドと Eigenclasses のメソッド

クラスのメソッドとそのクラスの固有クラス (またはメタクラス) のメソッドは、1 つのことを定義する 2 つの方法にすぎませんか?

そうでなければ、違いは何ですか?

何らかの方法で異なる行動をしますX.aか?X.b

固有クラスを開くことで、クラス メソッドを上書きまたはエイリアスできることを認識しています。

0 投票する
1 に答える
933 参照

ruby - Ruby eigenclass パターン - 説明を求める

Ruby の固有クラスを最もよく説明している情報源はどれですか?

私は以下を読みました:

それでも、次の動作を推測できませんでした。

出力

code>

0 投票する
2 に答える
880 参照

ruby - モジュールからクラスの特定のインスタンスにメソッドを動的に追加する

取り決めは次のとおりです。クラス Box の特定のインスタンスをいくつかのメソッドで拡張する必要があります。モジュール内にライブを含める必要があるメソッドと、Box インスタンスにモジュールを動的に含めることができるようにしたい。今、私はevalでフックを使用しています:

それは非常にうまく機能していますが、evalを使用すると本当に汚いと感じます。私はそのようなものを探しています:

しかし、次のようにクラスにモンキーパッチを適用しないと、固有クラスにclass_evalを実行させることができません。

これを行うための美しい(そして信頼できる)方法はありますか?

0 投票する
4 に答える
3579 参照

ruby - Rubyの匿名クラス

2つの質問があります:

  1. メソッドf_1はメタクラス匿名クラスに属していますか?
  2. メソッドf_2は匿名クラスに属していますか?

次のコードに関連しています。

0 投票する
2 に答える
1324 参照

ruby-on-rails - Ruby でメタプログラミングと固有クラスについて学ぶことが重要なのはなぜですか?

私は現在、Ruby と Rails の実験を行っており、メタプログラミングに関するチュートリアルや書籍のいくつかのセクションにアクセスしました。これは Ruby の不可欠なコンポーネントであると多くの人が言及していますが、詳細には触れていません。あたかも Ruby プログラマーにとってメタプログラミングが最後のフロンティアであるかのようです。.NET のバックグラウンドを持っているため、なぜこれが有用であると思われるのか理解に苦しんでいます。

  • メタプログラミングを使用すると、どのような利点が得られますか?
  • 固有クラスとは何ですか? シングルトンとはどう違うのですか?
  • どのような状況でメタプログラミングを使用するのが一般的ですか?
  • コードを使用して他のコード、特に自分のものではないコードの動作を変更することには、どのような倫理的影響がありますか?
0 投票する
3 に答える
537 参照

ruby - Rubyですべての固有クラスを取得することは可能ですか?

Ruby では、すべてのモジュールのリストを取得するのは簡単です。

しかし、すべての固有クラス (シングルトン クラスまたはメタクラスとも呼ばれます) のリストを取得することは可能ですか? それとも、固有クラスは見えませんか?

私は試した

スクリプト内で定義されているすべてのメソッドをリストしたいので、固有クラスを取得しようとしています。モジュールとクラスによって定義されたすべてのインスタンス メソッドを探してから、モジュールとクラス (または、CPU をかみ砕く必要がある場合はすべてのオブジェクト) のシングルトン メソッドを探すことができますが、それは少しハックに思えます。