哈囉各位好~ 我又來問蠢問題了,剛剛學到 Ruby 裡 Class 與 Mudle 之間的區別
module 裡面的 function 定義本身不能被自己呼叫 (除非使用 self.function) 而他的 function 定義卻可以被 class 工廠所引用 (模仿?)
Class 是工廠可以生產任何東西, 而 Module 則只是樣品或設計圖 (不能直接拿來用)
於是我想到這樣的譬喻 今天在海綿寶寶的世界裡有一間名叫海之霸的餐廳 他們有"ChumBucket(海之霸)主打料理"的這個 class, 而皮老闆自己做的 "ChumBucket(海之霸)主打商品"是一種叫"海霸棒"的食物
irb>
class ChumBucket(海之霸)主打料理
def 吃起來
puts "會讓顧客上吐下瀉,必須送醫洗胃兩次。"
end
end
>海霸棒 = ChumBucket(海之霸)主打料理.new
>海霸棒.吃起來
會讓顧客上吐下瀉,必須送醫洗胃兩次。
而就在有一天皮老闆終於拿到了他夢寐以求叫 "KrabbyPattySecretFormula(美味蟹堡秘方)"的 module
module KrabbyPattySecretFormula(美味蟹堡秘方)
def 製作秘方
puts "放入", bun: "小圓麵包", patty: "肉餅", cheese: "起司", ketchup: "番茄醬", mayonaise: "美乃滋", mustard: "黃芥末", pickles: "醃菜", lettuce: "萵苣", onions: "洋蔥"
puts "最後再放上", top_bun: "麵包"
end
def 吃起來
puts "會讓顧客回味無窮,這是因為小神廚─海綿寶寶以極快樂的心情,恰到好處的材料,最好的技巧,還有想要給顧客知道的用心,全部放在蟹堡哩,所以才會這麼美味吧!"
end
end
於是皮老闆就把秘方佔為己有,並把秘方輸入凱倫的電腦記憶體裡
class ChumBucket(海之霸)的主打料理
def 吃起來
puts "會讓顧客上吐下瀉,必須送醫洗胃兩次。"
end
include KrabbyPattySecretFormula(美味蟹堡秘方)
end
然後製作”海之堡“來大賣~
>海之堡 = ChumBucket(海之霸)的主打料理.new
>海之堡.製作秘方
放入
{:bun=>"小圓麵包", :patty=>"肉餅", :cheese=>"起司", :ketchup=>"番茄醬", :mayonaise=>"美乃滋", :mustard=>"黃芥末", :pickles=>"醃菜", :lettuce=>"萵苣", :onions=>"洋蔥"}
最後再放上
{:top_bun=>"麵包"}
=> nil
現在我有一個問題就是 我該怎麼讓 海之堡。吃起來 可以是 "會讓顧客回味無窮..."?
請各位大大指點~