问题标签 [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-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
都在那里并且像往常一样工作。
我做错了吗?
ruby - 如何在 mixin 方法中访问实例变量?
如何在 mixin 方法中访问实例变量?我可以想到两种方法,但似乎都有问题。
让 mixin 方法像任何类方法一样直接访问实例变量,例如 self.text。这样做的问题是它限制了 mixin 方法的使用位置,并强制进行混合的类具有以特定方式命名的特定实例方法。
将实例变量作为参数传递给 mixin 方法,这将导致如下代码:
例子
或者
这对我来说看起来很讨厌,并且不符合面向对象的原则。
有没有其他方法可以做到这一点?,我担心吗?
grails - Groovy MetaClass - 将类别方法添加到适当的元类
我在 Grails 插件中使用了几个类别。例如,
我正在寻找将这些方法添加到元类的最佳方法,这样我就不必使用类别类,而可以将它们作为实例方法调用。例如,
是否有一个 Groovy/Grails 类或方法可以帮助我做到这一点,或者我是否坚持迭代这些方法并自己添加它们?
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 混合的成功经验?
ruby - ruby 在遇到“include module”语句时会包含什么?
如果我有以下项目结构
其中 lib.rb 看起来像这样:-
并且 a.rb 和 b.rb 都需要在 lib.rb 中混合一些方法,并且都在一个模块中命名空间,如下所示:-
ruby 在遇到 include 语句时会做什么?它怎么知道我只想包含来自 lib.rb 的 mixin,而不是包含 A 类和 B 类的整个模块,这纯粹是基于子项目/lib 的要求,还是我弄错了,它是包括整个模块,包括它们自身内部的 A 类和 B 类的定义?
ruby - 从模块中访问类的包含命名空间
我正在开发一个模块,除其他外,它将向您将其混入的类添加一些通用的“查找器”类型功能。问题:出于方便和美观的原因,我想在类之外包含一些功能,与类本身在同一范围内。
例如:
我可以在这些方法中完成功能,没问题。案例 1 ( User.name('Bob')
) 很简单。然而,案例 2-4 需要能够在User
. 该Module.included
方法使我可以访问该类,但不能访问其包含范围。我在 Class 或 Module 上看不到简单的“父”类型方法。(对于命名空间,我的意思是,不是超类也不是嵌套模块。)
我能想到的最好方法是对类进行一些字符串解析#name
以打破其命名空间,然后将字符串转换回常量。但这似乎很笨拙,鉴于这是 Ruby,我觉得应该有一种更优雅的方式。
有人有想法吗?或者我只是为了自己的利益太聪明了?
ruby - Objective-C 是否像 Ruby 一样支持 Mixin?
在 Ruby 中,有模块,您可以通过“混入”模块来扩展类。
在 Objective-C 中,我发现我有一组常用方法,我希望一些 Class 可以“继承”。在不创建公共类并从该公共类派生所有内容的情况下,我还有什么其他方法可以实现这一点?
groovy - 如何使用 groovy mixin 添加静态方法
我想使用 groovy 的 mixin 功能将方法导入为“类(静态)方法”而不是实例方法。当我使用 mixin 时,即使我的 mixin 类中有一个静态方法,它也会转换为目标类中的实例方法。我希望导入的方法是类(静态)方法。有没有好的方法呢?