metaprogramming 或著叫做中介編程
簡單的說呢 就是寫一個程式讓他自己會去寫程式。
什麼意思呢? 請看下面的例子:
–
print "你要招換什麼生物?"
creature_class = gets
case gets
when "貓耳娘"
creature = 貓耳娘.new
when "長髮蘿莉"
creature = 長髮蘿莉.new
end
–
上面的程式碼可以達到我們的要求:使用者輸入什麼東西,就建立什麼物件的實體。
但是有沒有更乾淨的寫法呢?
–
print "你要招換什麼生物?"
creature_class = gets
eval( "creature = " + creature_class + ".new" )
–
看出來了嗎? eval這個函式接受了一個字串,並且叫ruby把這個字串當做一段程式碼來編譯。
也達到了metaprogramming的意義 動態的產生程式。
消息來源
0 意見:
張貼留言