gpt4 book ai didi

ruby - 在运行时向 Ruby 类添加类实例变量和 attr_reader?

转载 作者:数据小太阳 更新时间:2023-10-29 07:47:12 32 4
gpt4 key购买 nike

如何在运行时添加类实例变量、它的数据和 attr_reader?

class Module
def additional_data member, data
self.class.send(:define_method, member) {
p "Added method #{member} to #{name}"
}
end
end

例如,给定这个类

class Test
additional_data :status, 55
end

这样我就可以调用:

p Test.status # => prints 55

最佳答案

这个怎么样?

class Object
def self.additional_data(name, value)
ivar_name = "@#{name}"

instance_variable_set(ivar_name, value)

self.class.send(:define_method, name) do
instance_variable_get(ivar_name)
end

self.class.send(:define_method, "#{name}=") do |new_value|
instance_variable_set(ivar_name, new_value)
end
end
end

class Foo
additional_data :bar, 'baz'
end

puts Foo.bar # => 'baz'
Foo.bar = 'quux'
puts Foo.bar # => 'quux'

这是不言自明的,但如果您有任何问题,请告诉我。

关于ruby - 在运行时向 Ruby 类添加类实例变量和 attr_reader?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4534813/

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