#ruby中的方法可以是類方法,可以是例項方法,還可是是自己的單件方法
#我們先來乙隻傳統的鴨子
class quacker
def initialize
@vox='quack,quack'
enddef swim
puts "紅掌撥輕波"
self
enddef sing
puts @vox
self
endend
#每乙隻鴨子生下都會嘎嘎叫著游泳
quacker=quacker.new
quacker.sing.swim
#quack,quack
#紅掌撥輕波
#但是醜小鴨生下來只會hang,hang的叫
swan=quacker.new
swan.instance_variable_set(:@vox,'hong,hong')
swan.sing.swim
#hong,hong
#紅掌撥輕波
#到這兒,它沒有任何特殊的,特別是他如此的又大又醜,以致於不招人喜歡,
#可是它是鴨子嗎,鴨媽媽認為是,因為它會游泳,這是鴨子的天賦技能,我們也認同
puts "鴨媽媽也認為會游泳的都是鴨子" if swan.respond_to?(:swim)
#鴨媽媽也認為會游泳的都是鴨子
puts "我們認為這是乙隻鴨子" if swan.is_a?(quacker)
#我們認為這是乙隻鴨子
#直到有一天。它學會了飛翔.但是鴨子是不會飛的
def swan.fly
puts "my heart will go on !!#"
self
endswan.fly
#my heart will go on !!hong,hong
#quack.fly
# undefined method `fly' for #
Ruby 中的inject方法
ruby inject 1 求和 inject 方法的兩種用法 enum.inject init value enum.inject第一種,result 以init value為初始值 第二種,result以element裡的第乙個元素為初始值。1,2,3,4 inject 0 10 1,2,3,4...
ruby中的方法查詢
ruby中的方法呼叫都是物件.方法的形式,那麼物件如何找到這個方法呢?首先必須了解祖先鏈的概念,祖先鏈就是從乙個類開始,到它的父類,再到父類的父類.一直到最終的起點 ruby中是basicobject類 這期間經歷過的路徑就是祖先鏈。1混含模組和繼承的方法查詢 對於乙個例項物件,先找它屬於的類中是否...
ruby中attr accessor方法的理解
attr accessor相當於attr reader和attr writer的合集,實際上是在定義類成員變數的時候就給他定義了乙個get和set方法。在ruby中,類成員變數都是私有的,不能直接通過 類名.成員變數名 這樣來對成員變數值進行操作。在這個例項中可以看到,使用attr accessor...