About Me

我的相片
Taipei<->HsinChu, Taiwan
我是 Mashi,叫我 媽許、罵許,我都會回頭XD
2008年1月2日 星期三

Ruby的eval函式 - 最簡單的metaprogramming

http://poga.wordpress.com/ 轉貼,特此感謝。

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 意見:

 
Blogger Template Layout Design by [ METAMUSE ] : Code Name BlackCat 2.0.0