Metaprogramming

突然發現這篇文章被我刪了…把它救回來

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的意義 動態的產生程式。

雖然寫的省略太多…

廣告

Metaprogramming” 有 4 則迴響

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s