醜小鴨的故事 ruby中的方法

2021-07-16 04:13:08 字數 1041 閱讀 5713

#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...