問題タブ [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 - モジュールを含むクラスのリストを取得する
含まれているすべてのクラスのリストを取得したい mixin があります。mixin モジュールでは、次のことを行いました。
これはかなりうまくいきます:
ここで、この部分を他の mixin に含めることができる別のモジュールに抽出したいと思います。それで、私は次のことを思いつきました:
ただし、ListIncludedClasses から MyModule に追加される #included(module_base) メソッドが実行されないため、これは機能しません。興味深いことに、#classes が MyModule に正常に追加されます。
私は何が欠けていますか?
ruby-on-rails-3 - Rails 3のコントローラーでミックスインまたはモジュールを使用するにはどうすればよいですか?
コントローラーにいくつかの動作があり、テストを改善していくつかの場所で再利用するためにモジュールに引き出しました。これに関する2つの質問:
- モジュールを配置するのに適した場所はどこですか?コントローラで利用できるようにするには実行する必要があるので、
config/initializers/
ディレクトリを考えていました。しかし、それは私には少し疑わしいようです。lib/
? include
モジュールがコントローラーで使用できるようにコードが実行されるようにするにはどうすればよいですか?
よろしくお願いします。
ruby - Ruby の抽象クラスに代わるものはありますか?
私はRubyが初めてです。簡単な例、私が必要なもの:
つまり、Animal を拡張するすべてのクラスに eat() メソッドが必要です。
JAVA では抽象クラスを使用するだけでしたが、いくつかの調査を行った結果、Ruby では多くの人がそれを使用せず、代わりに mixin / モジュールが推奨されていることがわかりました。
ただし、モジュールが追加メソッドを含める以上のことができるかどうかはわかりません。正確に言うと、モジュールは、実装する必要のあるクラスの要件を設定できますか (そうであれば、例を示していただければ幸いです)。
要約すると、この場合、同じタイプのすべてのクラスに特定のメソッドがあり、それらを独自の方法で実装することを確認したい場合は、何を使用すればよいでしょうか?
ruby - Rubyモジュールの組み込みは実際には「多重継承」ではなく、Rubyスタイルは多重継承に関連する問題をどのように回避しますか?
Matzは、「ミックスインは、関連する欠点なしに、多重継承が行うほとんどすべてのことを実行できる」と述べたと思われます(Matzの言葉)。
まず第一に、Rubyモジュールの包含が「多重継承」ではないのはなぜですか?モジュールとクラスの間にほとんど違いがないように私には思えます。モジュールをスーパークラスとして使用する場合、モジュールをインスタンス化できないという事実は関係ありません。
また、モジュールを連続して含めると、クラスから上向きに伸びる単一の継承チェーン(ツリーではない)が形成されることも知っています。しかし、Pythonの多重継承システムは( C3アルゴリズムを使用して)スーパークラスチェーンも「線形化」するため、これは「多重継承」と区別するのに十分ではありません。Rubyの「線形化」プロセスが大幅に単純化されているだけです。
では、Pythonのような言語で、Rubyモジュールのミックスインと多重継承を正確に区別するものは何でしょうか。そして、なぜc3 MROアルゴリズムのPython採用の背後にある議論がRubyに適用されないのですか?そして、それらが当てはまる場合、なぜRubyはこのアルゴリズムを採用しないことにしたのですか?
ありがとう
php - lessphpのマルチネスト、マルチブロックミックスイン
一部のコードを従来のlessコードからlessphpに変換している間。クラシックlesscssから発見した非互換性は、ネストレベルが2を超えるマルチブロックミックスインがサポートされていないことです。クラシックlessは、ネストされたブロックが多数あるミックスインを完全にサポートしているようです。
これは意図的なものですか?ミキシング内の2つのネストレベルのサポートですか?
例:
上記でlessphpを使用すると、3番目のネストレベルが発生します。liタグのcssコードが含まれているものは完全に無視されます!
ruby - モジュール mixin を静的メソッドで機能させるにはどうすればよいですか?
2 つのモジュールがあるとします。ミックスインのように動作する別のモジュール内にモジュールを含めることは可能ですか?
例えば:
編集:最初にコードを間違ってコピーしたことに気付きました。メソッドは静的である必要があります。修正されたコードは上記のとおりです (動作しません)。
python - Pythonでは、継承を使用せずにミックスイン動作を実装できますか?
Pythonには、Rubyで見られるものと同様のミックスイン動作を実装するための合理的な方法がありますか?つまり、継承を使用しませんか?
クラスデコレータでこれを行うという漠然とした考えがありましたが、私の試みは混乱を招きました。このトピックに関する私の検索のほとんどは、継承(またはより複雑なシナリオでは多重継承)を使用してミックスイン動作を実現する方向に進んでいます。
c# - C#でミックスインアーキテクチャフレームワークを構築するにはどうすればよいですか?
構築したいコントロールのフレームワークのコンセプトがあります。このアイデアが異なるのは、「1つのサイズですべてに対応する」アプローチや「1つのコントロールですべてを支配する」アプローチを採用するつもりはないということです。
例として、Telerikは、ComponentOne、Xceedなどと同様に、非常に優れたグリッドコントロールを作成します。ただし、これらはすべて、数百または数千のメソッドとプロパティ、複雑なオブジェクトモデル階層などを備えた巨大なコントロールです。グリッドは必要なものに対してはやり過ぎですが、それでも、単純なことを行うには、グリッド全体を学習するという非常に困難な作業を行う必要があります。
私のコンセプトは、より「ミックスイン」アプローチです。非常に単純なコントロールを作成してから、アラカルトでコントロールに「アドイン」できる機能を構築します。たとえば、単純なグリッドがあり、それぞれにヘッダーとフッターを持つグリッド「セクション」を追加するとします。
さて、問題はどこにありますか?このようなことを行う従来の方法は、C#がサポートしていない多重継承を介する方法です。それがそれをサポートしたとしても、MIはそれが解決するよりも多くの問題を追加すると私はまだ考えています。
ですから、この問題への取り組み方について意見を求めてSOを募集しています。MEFは潜在的な解決策になるでしょうか?
編集:
私が思いついたのは、式ツリーを使用してさまざまな式からコントロールを構築できる可能性があるということです。これについてもう少し考えなければなりませんが、それは興味深い概念です。
別の可能なオプションは、選択した機能に基づいてアセンブリを生成する「コントロールジェネレータ」です。それはもっと複雑に思えますが、T4では管理しやすいかもしれません。
c++ - 親クラスによって定義された型を使用する基本クラス
A_Base
親クラスによって型が定義されているデータ メンバーを基本クラスでインスタンス化する必要がある Visual Studio 2008 C++ アプリケーションがあります。例えば:
残念ながら、コンパイラはT::Foo
手遅れになるまで何が何であるかを認識していないようで、次のようなエラーが発生します。
このタイプの機能を実現する方法はありますか?
ありがとう、ポールH
ruby-on-rails - テストヘルパーモジュールが含まれている場合の「初期化されていない定数」
ヘルパー モジュールをテストに含めようとすると、初期化されていない定数エラーが発生します。
私のレールテストディレクトリに次のファイルがあります
クラス/モジュール本体は次のとおりです。
これを実行すると、テスト出力は次のようになります。
/.../.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.3.0/lib/rspec/core/backward_compatibility.rb:20:in `const_missing': 初期化されていない定数 ControllerHelper (NameError )
名前空間で遊んでみましたが、モジュールをまったく混在させることができません! このエラーが発生する理由はありますか? それとも、これは一般的なテスト関数を抽出する正しい方法ですか? 私はRailsに非常に慣れていないので、アドバイスをいただければ幸いです:)
乾杯!