问题标签 [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.

0 投票
1 回答
2005 浏览

ruby-on-rails - 从模块mixin(rails)的实例方法内部调用类方法

好奇如何从活动记录类包含的模块的实例方法内部调用类方法。例如,我希望用户模型和客户端模型共享密码加密的细节。

然而,这失败了。表示实例方法调用时找不到类方法。我可以调用 User.encrypt_password('password') 但 User.authenticate('password') 无法查找方法 User#encrypt_password

有什么想法吗?

0 投票
1 回答
396 浏览

qt - Qt:是否可以使用 mixins 技术?

Qt 库包括使用他们自己的预处理 moc 编译器的高级元编程功能。有谁知道,是否可以通过它创建某种混音?例如,我有一个 QString 并且想在不子类化和更改现有代码的情况下向它添加一个方法。Qt 有这样的解决方案吗?

0 投票
3 回答
2145 浏览

actionscript-3 - AS3 中的 Mixin 或 Trait 实现?

我正在寻找有关如何在 AS3 中实现Mixin/Trait样式系统的想法。

我希望能够将多个类组合成一个对象。当然,这不是 AS3 的语言级功能,但我希望可能有某种方法可以使用基于原型的技术或我相信 AsMock 用来实现其功能的一些字节码黑客技术来做到这一点。

现有的 Java 示例是Qi4J,其中用户定义 Qi4j 框架根据元数据标签和约定编码实现的接口。

有人对如何在 AS3 中使用 Mixin/Trait 概念有任何想法吗?

0 投票
2 回答
9440 浏览

language-agnostic - mixin 和装饰器模式有什么区别?

装饰器模式是类在运行时的动态扩展。它动态地形成一个 is-a 关系。

在我得到这个关于 mixin 和抽象类之间区别的答案后,我开始怀疑我是否使用装饰器模式使我的 API 过于复杂。

0 投票
6 回答
595 浏览

language-agnostic - 目前支持 mixin 的语言有哪些?

很明显 Ruby 和 Sass,但还有哪些其他的呢?

0 投票
4 回答
987 浏览

c++ - C++动态类型构造和检测

C++ 中有一个有趣的问题,但更多的是关于架构。

有许多(10、20、40 等)类描述了一些特征(混合类),例如:

主模块声明和导出一个函数(为简单起见,只声明没有类的函数):

任何其他模块都可以有这样的代码:

问题是你怎么知道给定对象的真实类型是什么operate()而不使用dynamic_cast类中的任何类型信息(常量等)?该operate()函数在小时间段内与大量对象一起使用,并且dynamic_cast速度太慢,我不想包含常量(enum obj_type { ... }),因为这不是 OOP 方式。

我不能直接将 a 传递pBase给这些函数。而且不可能有所有可能的类组合,因为我可以通过包含新的头文件来添加新的类。

想到的一种解决方案是,在编辑器中我可以使用复合容器:

但是编辑器不需要时间优化,可以dynamic_cast根据零件来确定准确的类型。在operate()我不能使用这个解决方案。

那么,是否可以避免使用adynamic_cast和type信息来解决这个问题呢?或者也许我应该使用另一种架构?

0 投票
1 回答
1017 浏览

c# - 帮助将 mixin 从 Castle.DynamicProxy 迁移到 DynamicProxy2

我正在尝试将一些代码从使用 DynamicProxy 更新为 DynamicProxy2。特别是我们使用 DynamicProxy 来提供两个类的混合。设置是这样的:

然后假设 IHasShape 和 IHasColor 有一些明显的具体实现,我们将创建一个这样的 mixin:

除了作为代理创建的结果之外,没有 IColoredShape 的具体实现。StandardInterceptor 对 IColoredShape 对象进行调用,并将它们委托给适当的“形状”或“颜色”对象。

但是,我一直在使用新的 DynamicProxy2 并且找不到等效的实现。

0 投票
2 回答
5427 浏览

python - 在 Python 中进行 MixIns 的优雅方法是什么?

我需要找到一种优雅的方式来做 2 种 MixIn。

第一的:

现在,aMixInClass应该method1这样做:do_other()-> A.method1()-> do_smth_else()- 即基本上“包装”旧函数。我很确定必须有一个很好的解决方案。

第二:

在这种情况下,我希望MixInClass2能够在do_something()and之间注入自身do_more(),即:do_something()-> MixIn.method1-> do_more()。我知道这可能需要修改class B- 没关系,只是寻找最简单的方法来实现这一点。

这些都是非常微不足道的问题,我实际上解决了它们,但我的解决方案被污染了。

第一个使用self._old_method1 = self.method1(); self.method1() = self._new_method1();和编写_new_method1()调用_old_method1().

问题:多个 MixIn 将全部重命名为 _old_method1 并且不优雅。

第二个 MixIn 是通过创建一个虚拟方法call_mixin(self): pass并在调用和定义之间注入它来解决的self.call_mixin()。再次不优雅并且会在多个 MixIns 上中断..

有任何想法吗?


感谢 Boldewyn,我为第一个找到了优雅的解决方案(我忘记了您可以即时创建装饰器,而无需修改原始代码):

仍在寻找第二个想法(这个想法不适合,因为我需要在旧方法内部注入,而不是在外部注入,就像在这种情况下一样)。


第二个解决方案如下,将“pass_func”替换为lambda:0.

0 投票
1 回答
1370 浏览

java - 帮助在 Tapestry5 中创建 JavaScript mixin?

我正在创建一个 mixin,它在文本字段获得焦点时呈现一个 javascript 文件。

我对 Tapestry 中的 mixins 的想法很陌生,我不确定在哪里放置我希望在文本字段获得焦点时运行的原始 javascript 文件。

以下是我的代码示例: Java mixin 类:

Javascript 混合文件:

我希望在文本字段获得焦点时运行的 javascript 文件的一部分:

我的 javascript 文件比上面大得多,我的问题是我应该把我的 javascript 代码放在哪里?

是否应该全部包含在 mixin.js 文件中?如果是这样,它到底应该去哪里?

提前感谢您的帮助。

0 投票
1 回答
209 浏览

ruby - 你能在 Ruby 中定义 <=>,然后自动定义 ==、>、<、>= 和 <= 吗?

这是我的Note课的一部分:

在我看来,应该有一个可以包含的模块,它可以根据我的<=>方法为我提供相等和比较运算符。有吗?

估计很多人都会遇到这样的问题。你一般是怎么解决的?(你怎么让它变干?)