麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Ruby > 正文

ruby 對象的初始化 方法

2020-03-29 12:11:47
字體:
來源:轉載
供稿:網友
 前面一節的 Fruit 類有兩個實變量,分別表述水果的類型和狀態.直到為這個類寫了一個定制的inspect方法,我們方才了解它不會對一個缺乏屬性的水果做出合理的解釋.幸運的是,Ruby提供了一種允許實變量總是被初始化的方法.


initalize方法

當Ruby創建一個新對象時,它總是會尋找一個名為 initialize 的方法并執行它.因此,我們可以簡單通過一個initialize方法向實變量中加入缺省值,這樣一來, inspect方法就有東西可說了.

ruby> class Fruit
    |   def initialize
    |     @kind = "apple"
    |     @condition = "ripe"
    |   end
    | end
   nil
ruby> f4 = Fruit.new
   "a ripe apple"  


將缺省的變為需要的

很多時候,缺省值不會有太多的意思.真的是缺省那樣的水果嗎?也許在創造水果的時候對其類型作要求是個更好的辦法.要這樣做,我們就必須給initialize 方法加入一個正式的參數.因為一些不會在此提及的原因,你向 new 傳遞的參數實際上是遞給了initialize.

ruby> class Fruit
    |   def initialize( k )
    |     @kind = k
    |     @condition = "ripe"
    |   end
    | end
   nil
ruby> f5 = Fruit.new "mango"
   "a ripe mango"
ruby> f6 = Fruit.new
ERR: (eval):1:in `initialize': wrong # of arguments(0 for 1)  


彈性的初始化

上面我們看到一旦一個參數被關聯到一個 initialize 方法上,就無法在避免錯誤產生的情況下將其省掉.如果希望考慮周全,我們可以在給了參數的情況下使用它,否則使用缺省值.

ruby> class Fruit
    |   def initialize( k="apple" )
    |     @kind = k
    |     @condition = "ripe"
    |   end
    | end
   nil
ruby> f5 = Fruit.new "mango"
   "a ripe mango"
ruby> f6 = Fruit.new
   "a ripe apple"  


可以在任何方法內使用缺省參數,而不僅僅是initialize.參數表(argument list)必須以有缺省值的參數結尾.

有時,提供多種初始化對象方法是有益的.雖然已超出本教程的范圍,但Ruby提供了對象映象(object reflection)和可變長度的參數表(variable-length argument lists),這些都有效地促進了方法重載.  
 
 

上一篇:ruby 雜項

下一篇:ruby 存取器 概念

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 在线观看中文字幕av | 在线播放的av网站 | xxxx69hd一hd| 国产做爰 | 蜜桃视频网站www | 久久久久久久久久网站 | 羞羞答答tv | 伊人久久国产精品 | 91精品国产一区二区三区四区在线 | 在线视频观看国产 | 国产成人高潮免费观看精品 | 伊人999| 夏目友人帐第七季第一集 | 免费观看一区二区三区视频 | 成人不卡一区二区 | 黄色网址入口 | 成人毛片视频在线观看 | 国产午夜精品一区二区三区免费 | 在线免费日本 | 特逼视频| 久久久av亚洲男天堂 | 全黄性性激高免费视频 | 看片一区二区三区 | 国产一级做a爰片在线看 | 亚洲成人在线免费观看 | 国产一国产精品一级毛片 | www.mitao| 国产一级爱c视频 | 国产一级在线免费观看 | 特级毛片全部免费播放器 | 国产乱一区二区三区视频 | 久久久久久久午夜 | 黄色片网站在线免费观看 | 日韩精品久久久久久久九岛 | 成人在线国产 | 91精品久久久久久久 | 天海翼四虎精品正在播放 | 美女擦逼 | 午夜精品久久久久久久99热浪潮 | 国产乱色精品成人免费视频 | 91国在线高清视频 |