概要
動的メソッド
内容
実行時にメソッドを作成します。
サンプル
a-zの中から3-6文字を組み合わせて10個のメソッドを動的に作成します。
クラスはロードするたびにことなるメソッドを生成します。
# encoding: utf-8 require "pp" puts 97.chr puts 122.chr class RandHoge 10.times do method_name = "" rand(3..6).times do method_name << rand(97..122).chr end define_method "my_#{method_name}".to_sym do method_name end end end methods= RandHoge.instance_methods.grep /my_/ # ランダムで作成した10個のメソッドを確認 print methods puts hoge = RandHoge.new # ランダムで作成した10個のメソッドをすべて実行します。 outputs = [] methods.each do |method_name| outputs << hoge.method(method_name.to_s).call end print outputs
実行結果
a z [:my_tpddl, :my_ocpcx, :my_zxi, :my_ogdcid, :my_nrkdoz, :my_dltpj, :my_pmgica, :my_ijq, :my_udlp, :my_xqppt] ["tpddl", "ocpcx", "zxi", "ogdcid", "nrkdoz", "dltpj", "pmgica", "ijq", "udlp", "xqppt"]