Dynamically defined setter methods using define_method?

后端 未结 2 450
南笙
南笙 2021-02-04 05:52

I use a lot of iterations to define convenience methods in my models, stuff like:

PET_NAMES.each do |pn|
define_method(pn) do
...
...
end

but I

2条回答
  •  孤城傲影
    2021-02-04 06:52

    Shoertly if you need it inside one class/module: I use hash but you can put there array of elements etc.

    PETS = {
      "cat" => "meyow",
      "cow" => "moo",
      "dog" => "ruff"
    }
    
    def do_smth1(v)
    ...
    end
    
    def do_smth(sound,v)
    ...
    end
    
    #getter
    PETS.each{ |k,v| define_method(k){ do_smth1(v) } }
    
    #setter
    PETS.each{ |k,v| define_method("#{k}="){|sound| do_smth2(sound, v) }
    

提交回复
热议问题