Questions tagged «mixins»

混合是一种使用其他对象的属性或方法增强对象而不继承该对象的方法。

16
什么是mixin,为什么它们有用?
在“ Python编程 ”中,Mark Lutz提到了“ mixins”。我来自C / C ++ / C#背景,以前没有听说过这个词。什么是mixin? 在本示例的两行之间进行阅读(我已经链接到它,因为它很长),我认为这是使用多重继承来扩展类而不是“适当的”子类的一种情况。这是正确的吗? 为什么我要这样做而不是将新功能放入子类中?因此,为什么混合/多重继承方法比使用组合更好? 什么将mixin与多重继承分开?这仅仅是语义问题吗?

5
Sass-将十六进制转换为RGBa以实现背景不透明度
我有以下Sass mixin,它是RGBa示例的一半完整修改: @mixin background-opacity($color, $opacity: .3) { background: rgb(200, 54, 54); /* The Fallback */ background: rgba(200, 54, 54, $opacity); } 我已经申请了$opacity确定,但现在我对这个$color零件感到困惑。我将发送到mixin的颜色将是十六进制而不是RGB。 我的示例用法是: element { @include background-opacity(#333, .5); } 如何在此混合中使用十六进制值?


7
红宝石继承vs mixins
在Ruby中,由于您可以包含多个mixin但只能扩展一个类,因此似乎mixins比继承更受青睐。 我的问题:如果您要编写必须扩展/包含的代码才能有用,那么为什么要将它设为类?或换种说法,为什么不总是将其设为模块? 我只能想到您想要一门课的一个原因,那就是是否需要实例化该课。但是,对于ActiveRecord :: Base,您永远不会直接实例化它。那么,它不应该是一个模块吗?

2
在Facebook React中使用Mixins与组件进行代码重用
我开始在Backbone项目中使用Facebook React,到目前为止一切进展顺利。 但是,我注意到一些重复出现在我的React代码中。 例如,我有几个状态为INITIAL,SENDING和的类似表单的小部件SENT。当按下按钮时,需要验证表单,提出请求,然后更新状态。this.state当然,状态和字段值都保存在React 中。 如果这些是Backbone视图,我将提取一个名为的基类,FormView但我的印象是React既不认可也不支持子类共享视图逻辑(如果我错了,请纠正我)。 我已经看到了两种在React中重用代码的方法: Mixins(如React附带的LinkedStateMixin); 容器组件(例如react-infinite-scroll)。 我是否正确认为Mixins和容器在React中优先于继承?这是故意设计的决定吗? 在第二段的“表单小部件”示例中使用混合或容器组件是否更有意义? 这里有一个要点FeedbackWidget,并JoinWidget在其当前状态。它们具有相似的结构,相似的beginSend方法,并且都将需要某种验证支持(尚不存在)。

3
SCSS mixin中if / else条件的语法
嗨,我正在尝试学习SASS / SCSS,并试图为clearfix重构我自己的mixin 我想要的是mixin基于我是否将mixin传递为宽度。 到目前为止的想法(仅伪代码,因为我将包括其他mixins) @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 但是,令我惊讶的是它不适用于mixins: 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 

2
Mixins vs Scala中的成分
在Java世界中(更确切地说,如果您没有多个继承/混合),经验法则非常简单:“在类继承上是最喜欢的对象组成”。 我想知道是否/如果您也考虑混入,特别是在scala中,如何更改混入? 是否将mixin视为一种多重继承或更多类组合的方式? 还有“从对象组成到从类组成”(或相反)的指导原则吗? 当人们使用(或滥用)mixins进行对象组合也可以完成工作时,我已经看到了很多示例,但我并不总是确定哪一个更好。在我看来,您可以通过它们实现非常相似的事情,但是也存在一些差异,例如: 可见性-使用mixins时,所有内容都成为公共api的一部分,对于组合而言,情况并非如此。 冗长-在大多数情况下,mixin不太冗长,使用起来也更容易一些,但并非总是如此(例如,如果您还在复杂的层次结构中使用自身类型) 我知道简短的答案是“取决于情况”,但是当这种情况更好时,可能会有一些典型情况。 到目前为止,我可以提出一些准则示例(假设我具有A和B的两个特征,A希望使用B的某些方法): 如果要使用B的方法扩展A的API,则使用混合包,否则使用组合。但是,如果我正在创建的类/实例不属于公共API的一部分,则无济于事。 如果您想使用一些需要混合的模式(例如Stackable Trait Pattern),那么这是一个简单的决定。 如果您有循环依赖项,那么使用self类型的mixin可以提供帮助。(我试图避免这种情况,但这并不总是那么容易) 如果您需要一些动态的,运行时的决定,然后决定如何进行合成,然后进行对象合成。 在许多情况下,mixin似乎更容易(和/或不太冗长),但是我敢肯定,它们也存在一些陷阱,例如“上帝类”以及其他两篇artima文章中所述的其他内容:第1部分,第2部分(顺便说一句在我看来,其他大多数问题与scala无关/并不那么严重。 您还有更多类似的提示吗?

6
什么是Mixins(概念)
我试图让我了解Mixin概念,但是我似乎无法理解它的含义。我看到的是,这是一种通过使用继承来扩展类功能的方法。我读过人们将它们称为“抽象子类”。谁能解释为什么? 如果您能根据以下示例解释您的答案,将不胜感激(摘自我的演讲幻灯片之一):
75 c++  oop  templates  mixins 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.