gpt4 book ai didi

Ruby:动态生成attribute_accessor

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

我正在尝试从散列(使用嵌套散列)生成 attr_reader,以便它自动镜像 instance_variable 创建。

这是我目前所拥有的:

data = {:@datetime => '2011-11-23', :@duration => '90', :@class => {:@price => '£7', :@level => 'all'}}


class Event
#attr_reader :datetime, :duration, :class, :price, :level
def init(data, recursion)
data.each do |name, value|
if value.is_a? Hash
init(value, recursion+1)
else
instance_variable_set(name, value)
#bit missing: attr_accessor name.to_sym
end
end
end

但是我找不到办法做到这一点:(

最佳答案

您需要在 Event 类上调用(私有(private))类方法 attr_accessor:

    self.class.send(:attr_accessor, name)

我建议你在这一行添加@:

    instance_variable_set("@#{name}", value)

并且不要在哈希中使用它们。

    data = {:datetime => '2011-11-23', :duration => '90', :class => {:price => '£7', :level => 'all'}}

关于Ruby:动态生成attribute_accessor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7527832/

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