gpt4 book ai didi

ruby - 动态定义模块

转载 作者:行者123 更新时间:2023-12-03 18:25:40 24 4
gpt4 key购买 nike

在我在项目中使用的具有相同方法名称和不同返回值(带有模块名称的前缀)的示例模块(n 个数字)下方。

module Example1
def self.ex_method
'example1_with_'
end
end


module Example2
def self.ex_method
'example2_with_'
end
end

我尝试使用像#define_method 这样的元编程方式来实现这一点。但是,它不适合我。有什么办法吗?
array.each do |name|
Object.class_eval <<TES
module #{name}
def self.ex_method
"#{name.downcase}_with_"
end
end
TES
end

错误快照:你可以在最后一行看到它没有完成。

enter image description here

最佳答案

m = Object.const_set("Example1", Module.new)
#=> Example1
m.define_singleton_method("ex_method") { 'example1_with' }
#=> :ex_method

让我们来看看:
Example1.is_a? Module
#=> true
Example1.methods.include?(:ex_method)
#=> true
Example1.ex_method
#=> "example1_with"

关于ruby - 动态定义模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37154774/

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