小编Jul*_*lho的帖子

Ruby:如何动态创建attr_accessor

我想知道如何动态创建attr_accessor.有可能做这样的事情:

attr_accessor "@#{key}" 
Run Code Online (Sandbox Code Playgroud)

在initialize方法里面?

module Mymodule
  def initialize(parameters = {})
    parameters.each do |key, value|
      instance_variable_set("@#{key}", value) unless value.nil?
    end
  end
end

class Myclass
  include Mymodule
end

clazz = Myclass.new attr1: "Arg1", attr2: "Arg2", attr3: "Arg3"
  # => #<Myclass:0x43f6050 @attr1="Arg1", @attr2="Arg2", @attr3="Arg3">

clazz.attr1
  # !> NoMethodError: undefined method `attr1' for #<Myclass:0x43f6050 @attr1="Arg1", @attr2="Arg2", @attr3="Arg3">

clazz.attr1="ATTR1"
  # !> NoMethodError: undefined method `attr1=' for #<Myclass:0x43f6050 @attr1="Arg1", @attr2="Arg2", @attr3="Arg3">
Run Code Online (Sandbox Code Playgroud)

ruby attributes attr-accessor

1
推荐指数
1
解决办法
276
查看次数

标签 统计

attr-accessor ×1

attributes ×1

ruby ×1