タグ付けされた質問 「mixins」

16
ミックスインとは何ですか?なぜそれらが便利なのですか?
「Programming Python」では、Mark Lutzが「mixins」について言及しています。私はC / C ++ / C#の出身ですが、以前にその用語を聞いたことがありません。ミックスインとは何ですか? この例の行の間を読むと(非常に長いためにリンクしています)、「適切な」サブクラス化ではなく、多重継承を使用してクラスを拡張するケースであると思います。これは正しいですか? 新しい機能をサブクラスに入れるのではなく、なぜそれをしたいのですか?それについて、ミックスイン/マルチ継承アプローチがコンポジションを使用するよりも優れているのはなぜですか? ミックスインと多重継承を区別するものは何ですか?それは単なる意味論の問題ですか?

5
Sass-背景の不透明度のために16進数をRGBaに変換
次のSassミックスインがあります。これは、RGBaの例を半分完全に変更したものです。 @mixin background-opacity($color, $opacity: .3) { background: rgb(200, 54, 54); /* The Fallback */ background: rgba(200, 54, 54, $opacity); } 私は$opacity大丈夫ですが、今は$color部品に行き詰まっています。ミックスインに送信する色はRGBではなくHEXになります。 私の使用例は: element { @include background-opacity(#333, .5); } このミックスイン内でHEX値を使用するにはどうすればよいですか?


7
Rubyの継承とMixin
Rubyでは、複数のミックスインを含めることができますが、拡張するクラスは1つだけであるため、継承よりもミックスインの方が好ましいようです。 私の質問:役立つように拡張/インクルードする必要があるコードを書いているなら、なぜそれをクラスにするのでしょうか?または別の言い方をすると、なぜそれを常にモジュールにしないのですか? クラスが必要な理由は1つだけ考えられます。それは、クラスをインスタンス化する必要がある場合です。ただし、ActiveRecord :: Baseの場合は、直接インスタンス化することはありません。代わりに、それはモジュールではないのでしょうか?

2
Facebook Reactでのコード再利用のためのミックスインとコンポーネントの使用
私はバックボーンプロジェクトでFacebook Reactを使用し始めており、これまでのところ、それは本当に順調です。 しかし、Reactコードに重複が侵入していることに気づきました。 たとえば、やのような状態のフォームのようなウィジェットがいくつかあります。ボタンを押すと、フォームを検証し、要求を行って、状態を更新する必要があります。もちろん、状態はフィールド値とともにReact内に保持されます。INITIALSENDINGSENTthis.state これらがバックボーンビューである場合、私はと呼ばれる基本クラスを抽出しますFormViewが、私の印象では、Reactはビューロジックを共有するサブクラスを承認もサポートもしていないようです(私が間違っている場合は修正してください)。 Reactでコードを再利用するための2つのアプローチを見てきました。 Mixins(Reactに同梱されているLinkedStateMixinのような); コンテナコンポーネント(react-infinite-scrollなど)。 Reactでの継承よりもミックスインとコンテナーが優先されることは正しいのでしょうか?これは意図的な設計決定ですか? 2番目の段落の「フォームウィジェット」の例に、ミックスインまたはコンテナコンポーネントを使用する方が理にかなっていますか? ここでの要点だFeedbackWidgetとJoinWidgetそれらの現在の状態では。それらは類似した構造、類似したbeginSendメソッドを持ち、両方ともいくつかの検証サポートが必要です(まだありません)。

3
SCSSミックスインのif / else条件の構文
こんにちは私はSASS / SCSSを学習しようとしていて、自分のミックスインをクリアフィックス用にリファクタリングしようとしています 私が欲しいのは、ミックスインに幅を渡すかどうかに基づいてミックスインを設定することです。 これまでの考え(他のミックスインを含めるので、疑似コードのみ) @mixin clearfix($width) { @if !$width { // if width is not passed, or empty do this } @else { display: inline-block; width: $width; } } これは私がそれを呼ぶかもしれないと思った方法ですが、それは機能していません。 @include clearfix(); または @include clearfix(100%) または @include clearfix(960px) これを行うための最善または正しい方法についての助けをいただければ幸いです!


4
Rubyのモジュール/ミックスインからクラスメソッドを継承する
Rubyでは、クラスメソッドが継承されることが知られています。 class P def self.mm; puts 'abc' end end class Q < P; end Q.mm # works ただし、ミックスインでは機能しないのは驚きです。 module M def self.mm; puts 'mixin' end end class N; include M end M.mm # works N.mm # does not work! #extendメソッドがこれを行うことができることを知っています: module X; def mm; puts 'extender' end end Y = …
95 ruby  mixins 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.