【初心者にも分かりやすく】メタプログラミングって何?
コード自身を生成する(関数を新しく定義する、変数を作る)コードを書くことです
code:example.rb
class Car
def toyota(name)
p"toyota:" +name
end
def matsuda(name)
p"mathuda:" +name
end
def suzuki(name)
p"suzuki:" +name
car = Car.new
car.toyota("prius") #=> "toyota:prius" これ何をやっているのか読める(ゆうてそこまで難しいことは確かにやってないけど)Yudai.icon*2
上記だとメーカーの追加ごとに関数を作らないといけない
メタプログラミングで書くと、
code:example.rb
class Car
%w(toyota matsuda suzuki).each do|maker|
define_method(maker)do |name|
p"#{maker}" +name
end
end
end
car = Car.new
car.toyota("prius") #=> "toyota:prius" 思ったのが、どちらにしろ追加のメーカーがあるときは、%w()には追加しないといけないってことよね?Yudai.icon
配列に要素を追加するだけでメソッドを追加
なるほどYudai.icon
今頭の中にスマートコントラクトの場合、どちらにしろ毎回デプロイしないといけないやんって頭になってたけど、一旦それは忘れよう