小编use*_*854的帖子

尝试通过Ruby创建我自己的Struct

我无法继承Struct.我必须实现像Struct这样的类.有没有办法改进我的代码使用"ClassName"和功能像Struct?写k = Dave.new("Rachel","Greene")???

class MyStruct
  def self.new(*attributes)
    puts "ppp"
    dynamic_name = "ClassName"
    Kernel.const_set(dynamic_name,Class.new()  do
      attributes.each do |action|
        self.send(:define_method, action) {
          puts "call #{action}" 
        }
      end  
    end
    )
  end
end

# class ClassName
  # def new *args 
    # puts "iii"
  # end
# end



Dave = MyStruct.new(:name, :surname)

k=Dave.new()     # k=Dave.new("Rachel" , "Greene")
k.surname
k.name
Run Code Online (Sandbox Code Playgroud)

ruby struct metaprogramming

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

标签 统计

metaprogramming ×1

ruby ×1

struct ×1