佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > ruby 對(duì)象的初始化 方法

ruby 對(duì)象的初始化 方法

熱門標(biāo)簽:企業(yè)做大做強(qiáng) 客戶服務(wù) 百度AI接口 硅谷的囚徒呼叫中心 電話運(yùn)營(yíng)中心 語(yǔ)音系統(tǒng) Win7旗艦版 呼叫中心市場(chǎng)需求
 前面一節(jié)的 Fruit 類有兩個(gè)實(shí)變量,分別表述水果的類型和狀態(tài).直到為這個(gè)類寫(xiě)了一個(gè)定制的inspect方法,我們方才了解它不會(huì)對(duì)一個(gè)缺乏屬性的水果做出合理的解釋.幸運(yùn)的是,Ruby提供了一種允許實(shí)變量總是被初始化的方法.


initalize方法

當(dāng)Ruby創(chuàng)建一個(gè)新對(duì)象時(shí),它總是會(huì)尋找一個(gè)名為 initialize 的方法并執(zhí)行它.因此,我們可以簡(jiǎn)單通過(guò)一個(gè)initialize方法向?qū)嵶兞恐屑尤肴笔≈?這樣一來(lái), inspect方法就有東西可說(shuō)了.

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


將缺省的變?yōu)樾枰?

很多時(shí)候,缺省值不會(huì)有太多的意思.真的是缺省那樣的水果嗎?也許在創(chuàng)造水果的時(shí)候?qū)ζ漕愋妥饕笫莻€(gè)更好的辦法.要這樣做,我們就必須給initialize 方法加入一個(gè)正式的參數(shù).因?yàn)橐恍┎粫?huì)在此提及的原因,你向 new 傳遞的參數(shù)實(shí)際上是遞給了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)  


彈性的初始化

上面我們看到一旦一個(gè)參數(shù)被關(guān)聯(lián)到一個(gè) initialize 方法上,就無(wú)法在避免錯(cuò)誤產(chǎn)生的情況下將其省掉.如果希望考慮周全,我們可以在給了參數(shù)的情況下使用它,否則使用缺省值.

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"  


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

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

標(biāo)簽:山西 安康 海南 濟(jì)南 崇左 喀什 山西 長(zhǎng)沙

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ruby 對(duì)象的初始化 方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 上一篇:ruby 存取器 概念

    下一篇:ruby 雜項(xiàng)

    收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    井研县| 昭平县| 河曲县| 如东县| 盐池县| 东莞市| 南靖县| 隆昌县| 建宁县| 阿合奇县| 湖州市| 资阳市| 图木舒克市| 咸阳市| 盘锦市| 南宁市| 班戈县| 综艺| 宁德市| 南部县| 镇巴县| 司法| 西青区| 杭锦旗| 赞皇县| 湟源县| 陆河县| 惠东县| 泽州县| 潞西市| 利川市| 广丰县| 万源市| 宁化县| 桂阳县| 定陶县| 淮滨县| 金川县| 武宣县| 三亚市| 饶平县|