gpt4 book ai didi

ruby - 在ruby中的几个类中添加一个方法

转载 作者:数据小太阳 更新时间:2023-10-29 08:35:11 25 4
gpt4 key购买 nike

我想给几个类添加一个方法。但是我遗漏了一些我不知道如何调用它的东西,所以我无法搜索它

我想做类似的事情

["Class1", "Class2"].each do |klass|
class klass.constantize
def my_new_method
....
end
end
end

显然代码不起作用,但您明白了。如何使 klass 成为类名以便我可以声明该方法?

最佳答案

将功能添加到多个类通常是使用 mixins。 Module#prepend是你的 friend 。这样,如果方法覆盖扩展类中的现有方法,就可以调用super

["Class1", "Class2"].each do |klass|
Kernel.const_get(klass).prepend(Module.new do
def my_new_method
....
end
end)
end

或者,您可以预先声明此模块并调用 prepend 并在其中传递模块名称。

Mixin =
Module.new do
def my_new_method
....
end
end

["Class1", "Class2"].each do |klass|
Kernel.const_get(klass).prepend(Mixin)
end

或者,

module Mixin
def my_new_method
....
end
end

["Class1", "Class2"].each do |klass|
Kernel.const_get(klass).prepend(Mixin)
end

关于ruby - 在ruby中的几个类中添加一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57163720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com