问题标签 [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 投票
0 回答
563 浏览

ruby-on-rails - 无法从 mixin 访问 with_scope

我只是偶然发现了一个奇怪的问题,我真的不明白是什么原因造成的。

在我们的 rails 应用程序中,让我们有一个 mixin Mixin

它在include其他地方被编入模型类:

调用Model.new.foo导致错误:NoMethodError: undefined method with_scope

然后我将foo方法更改为:

但这也会导致错误:NoMethodError: protected method with_scope called

这似乎很奇怪。我本来期望 mixin 方法的行为与Model. 我以前从来没有偶然发现过这个,因为所有的实例方法save都在那里并且像往常一样工作。

我做错了吗?

0 投票
3 回答
11925 浏览

ruby - 如何在 mixin 方法中访问实例变量?

如何在 mixin 方法中访问实例变量?我可以想到两种方法,但似乎都有问题。

  1. 让 mixin 方法像任何类方法一样直接访问实例变量,例如 self.text。这样做的问题是它限制了 mixin 方法的使用位置,并强制进行混合的类具有以特定方式命名的特定实例方法。

  2. 将实例变量作为参数传递给 mixin 方法,这将导致如下代码:

例子

或者

这对我来说看起来很讨厌,并且不符合面向对象的原则。

有没有其他方法可以做到这一点?,我担心吗?

0 投票
1 回答
1573 浏览

grails - Groovy MetaClass - 将类别方法添加到适当的元类

我在 Grails 插件中使用了几个类别。例如,

我正在寻找将这些方法添加到元类的最佳方法,这样我就不必使用类别类,而可以将它们作为实例方法调用。例如,

是否有一个 Groovy/Grails 类或方法可以帮助我做到这一点,或者我是否坚持迭代这些方法并自己添加它们?

0 投票
4 回答
8053 浏览

maven - 如何使用 Maven 3 mixin?

我试图弄清楚在 Maven 3 中是如何定义 mixin 的,但除了嗡嗡声之外找不到任何东西。它在此处此处作为重要的新功能之一传播。我目前正在感受到层次结构的痛苦,并想试一试。有没有人有指向文档或定义语法的源的指针?

0 投票
1 回答
2725 浏览

g++ - C++ 中的 Mixin、可变参数模板和 CRTP

这是场景:我想要一个可以有可变数量的 mixin 的主机类(使用可变参数模板不太难——例如参见http://citeseerx.ist.psu.edu/viewdoc/summary?doi =10.1.1.103.144)。但是,我还希望由宿主类对 mixin 进行参数化,以便它们可以引用其公共类型(使用 CRTP 习惯用法)。尝试混合两者时会出现问题——我不清楚正确的语法。例如,以下代码使用 g++ 4.4.1 编译失败:

出现错误:

有没有人有将可变参数模板与 CRTP 混合的成功经验?

0 投票
1 回答
299 浏览

ruby - ruby 在遇到“include module”语句时会包含什么?

如果我有以下项目结构

其中 lib.rb 看起来像这样:-

并且 a.rb 和 b.rb 都需要在 lib.rb 中混合一些方法,并且都在一个模块中命名空间,如下所示:-

ruby 在遇到 include 语句时会做什么?它怎么知道我只想包含来自 lib.rb 的 mixin,而不是包含 A 类和 B 类的整个模块,这纯粹是基于子项目/lib 的要求,还是我弄错了,它是包括整个模块,包括它们自身内部的 A 类和 B 类的定义?

0 投票
3 回答
1948 浏览

ruby - 从模块中访问类的包含命名空间

我正在开发一个模块,除其他外,它将向您将其混入的类添加一些通用的“查找器”类型功能。问题:出于方便和美观的原因,我想在类之外包含一些功能,与类本身在同一范围内。

例如:

我可以这些方法中完成功能,没问题。案例 1 ( User.name('Bob')) 很简单。然而,案例 2-4 需要能够在User. 该Module.included方法使我可以访问该类,但不能访问其包含范围。我在 Class 或 Module 上看不到简单的“父”类型方法。(对于命名空间,我的意思是,不是超类也不是嵌套模块。)

我能想到的最好方法是对类进行一些字符串解析#name以打破其命名空间,然后将字符串转换回常量。但这似乎很笨拙,鉴于这是 Ruby,我觉得应该有一种更优雅的方式。

有人有想法吗?或者我只是为了自己的利益太聪明了?

0 投票
4 回答
6570 浏览

ruby - Objective-C 是否像 Ruby 一样支持 Mixin?

在 Ruby 中,有模块,您可以通过“混入”模块来扩展类。

在 Objective-C 中,我发现我有一组常用方法,我希望一些 Class 可以“继承”。在不创建公共类并从该公共类派生所有内容的情况下,我还有什么其他方法可以实现这一点?

0 投票
1 回答
2215 浏览

dynamic - 实例上的 Groovy Mixin(动态 Mixin)

我正在努力实现以下目标:

有一个显着的区别 - 我想在实例上做 mixin:

但这会导致

有没有办法像Groovy Mixins JSR中提议的那样工作?

0 投票
3 回答
2446 浏览

groovy - 如何使用 groovy mixin 添加静态方法

我想使用 groovy 的 mixin 功能将方法导入为“类(静态)方法”而不是实例方法。当我使用 mixin 时,即使我的 mixin 类中有一个静态方法,它也会转换为目标类中的实例方法。我希望导入的方法是类(静态)方法。有没有好的方法呢?