問題タブ [mixins]
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-on-rails - モジュール mixin (rails) のインスタンス メソッド内からクラス メソッドを呼び出す
アクティブなレコード クラスに含まれるモジュールのインスタンス メソッド内からクラス メソッドを呼び出す方法に興味があります。たとえば、ユーザー モデルとクライアント モデルの両方で、パスワード暗号化の基本を共有したいと考えています。
ただし、これは失敗します。インスタンス メソッドが呼び出したときにクラス メソッドが見つからないことを示します。User.encrypt_password('password') を呼び出すことはできますが、 User.authenticate('password') はメソッド User#encrypt_password の検索に失敗します
何かご意見は?
qt - Qt: ミックスイン技術を使用することは可能ですか?
Qt ライブラリには、独自の前処理 moc コンパイラを使用した高度なメタプログラミング機能が含まれています。それを介してある種のミックスインを作成することは可能ですか?たとえば、QString があり、既存のコードをサブクラス化および変更せずにメソッドを追加したいと考えています。Qtにはそのようなソリューションがありますか?
actionscript-3 - AS3 での Mixin または Trait の実装?
AS3 でMixin/Traitスタイル システムを実装する方法についてのアイデアを探しています。
多数のクラスをまとめて単一のオブジェクトに構成できるようにしたいと考えています。もちろん、これは AS3 の言語レベルの機能ではありませんが、プロトタイプ ベースの手法や、AsMock がその機能を実装するために使用すると思われるバイトコード ハッキングを使用してこれを行う方法があることを願っています。
既存の Java の例はQi4Jであり、ユーザーは Qi4j フレームワークがメタデータ タグと規約によるコーディングに基づいて実装するインターフェイスを定義します。
Mixin/Trait の概念を AS3 内で機能させる方法について何かアイデアはありますか?
language-agnostic - ミックスインとデコレータパターンの違いは何ですか?
デコレータパターンは、実行時のクラスの動的な拡張です。それは動的にis-a関係を形成します。
ミックスインと抽象クラスの違いについてこの回答を得た後、デコレータパターンを使用してAPIを過度に複雑にしているのではないかと思い始めました。
language-agnostic - 現在ミックスインをサポートしている言語は何ですか?
明らかにRubyとSassですが、他に何がありますか?
c++ - C++ 動的型の構築と検出
C++ には興味深い問題がありましたが、それはアーキテクチャに関するものでした。
いくつかの特性 (ミックスイン クラス) を記述する多く (10、20、40 など) のクラスがあります。次に例を示します。
プライマリ モジュールは、関数を宣言してエクスポートします (簡単にするために、クラスなしで関数宣言のみを行います)。
他のモジュールには、次のようなコードを含めることができます。
問題は、クラス内の型情報 (定数など)operate()
を使用せずに、指定されたオブジェクトの実際の型が何であるかをどのように知ることができるかということです。dynamic_cast
このoperate()
関数は、短期間にオブジェクトの大きな配列で使用され、遅すぎます。これは OOP の方法ではないためdynamic_cast
、定数 ( ) を含めたくありません。enum obj_type { ... }
pBase
これらの関数にa を直接渡すことはできません。また、新しいヘッダー ファイルをインクルードするだけで新しいクラスを追加できるため、考えられるすべてのクラスの組み合わせを持つことは不可能です。
思いついた解決策の 1 つは、エディターで複合コンテナーを使用できることです。
ただし、エディターは時間の最適化を必要とせずdynamic_cast
、パーツを使用して正確なタイプを決定できます。このoperate()
ソリューションを使用できません。
dynamic_cast
では、この問題を解決するために a と型の情報を使用しないようにすることは可能でしょうか? それとも、別のアーキテクチャを使用する必要がありますか?
c# - Castle.DynamicProxy から DynamicProxy2 へのミックスインの移行を支援する
DynamicProxy を使用するコードを DynamicProxy2 に更新しようとしています。特に、DynamicProxy を使用して 2 つのクラスの mixin を提供しています。セットアップは次のようなものです。
次に、IHasShape と IHasColor の明らかな具体的な実装を想定して、次のような mixin を作成します。
プロキシ作成の結果を除いて、IColoredShape の具体的な実装はありません。StandardInterceptor は、IColoredShape オブジェクトの呼び出しを受け取り、必要に応じて「shape」または「color」オブジェクトに委任します。
しかし、私は新しい DynamicProxy2 をいじっていて、同等の実装を見つけることができません。
python - Python で MixIns を行うエレガントな方法は何ですか?
2 種類の MixIn を行うエレガントな方法を見つける必要があります。
初め:
-> -> -つまり、基本的に古い関数を「ラップ」しMixInClass
ます。これに対する適切な解決策が存在するに違いないと確信しています。method1
do_other()
A.method1()
do_smth_else()
2番:
この場合、 と の間にMixInClass2
自分自身を挿入できるようにしたいと考えています。つまり、-> ->です。おそらくこれには変更が必要であることを理解しています-それは大丈夫です、これを達成するための最も簡単な方法を探しているだけです.do_something()
do_more()
do_something()
MixIn.method1
do_more()
class B
これらはかなり些細な問題であり、実際に解決しましたが、私の解決策は汚染されています。
の呼び出しを使用self._old_method1 = self.method1(); self.method1() = self._new_method1();
して記述することにより、最初の 1 つ。_new_method1()
_old_method1()
問題: 複数の MixIn がすべて _old_method1 に名前変更され、洗練されていません。
2 番目の MixIn は、ダミー メソッドを作成し、call_mixin(self): pass
それを呼び出しと定義の間に挿入することで解決されましたself.call_mixin()
。これもエレガントではなく、複数の MixIn で壊れます。
何か案は?
Boldewyn のおかげで、最初のソリューションに対するエレガントなソリューションを見つけました (元のコードを変更せずにオンザフライでデコレータを作成できることを忘れていました)。
2番目のアイデアをまだ探しています(この場合のように、外部ではなく古いメソッドの内部に注入する必要があるため、このアイデアは適合しません)。
2 番目の解決策は以下のとおりです。「pass_func」を に置き換えlambda:0
ます。
java - Tapestry5 で JavaScript mixin を作成するのに役立ちますか?
テキストフィールドがフォーカスされたときに JavaScript ファイルをレンダリングする mixin を作成しています。
タペストリーのミックスインのアイデアは初めてで、テキストフィールドがフォーカスされたときに実行したい元の JavaScript ファイルをどこに配置すればよいかわかりません。
以下は私のコードの例です: Java mixin クラス:
Javascript mixin ファイル:
テキストフィールドがフォーカスを得たときに実行したい私のJavaScriptファイルの一部:
私の JavaScript ファイルは上記よりもはるかに大きいです。私の質問は、上記の JavaScript コードをどこに置くべきかということです。
すべて mixin.js ファイルに含める必要がありますか? もしそうなら、それは正確にどこに行くべきですか?
助けてくれてありがとう。
ruby - Rubyで<=>を定義してから、==、>、<、> =、および<=を自動的に定義できますか?
これが私のNote
クラスの一部です:
私の方法に基づいて、等式演算子と比較演算子を提供できるモジュールを含めることができるはずだと私には思えます<=>
。ありますか?
多くの人がこの種の問題に遭遇していると思います。通常、どのように解決しますか?(どうやって乾かしますか?)