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的意義 動態的產生程式。
請先 登入 以發表留言。