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

主頁(yè) > 知識(shí)庫(kù) > rudy 方法 分析

rudy 方法 分析

熱門標(biāo)簽:客戶服務(wù) 電話運(yùn)營(yíng)中心 Win7旗艦版 呼叫中心市場(chǎng)需求 硅谷的囚徒呼叫中心 百度AI接口 企業(yè)做大做強(qiáng) 語(yǔ)音系統(tǒng)
 什么叫做一個(gè)方法呢?在OO編程里,我們不希望直接從外部操縱一個(gè)對(duì)象的數(shù)據(jù);相反的,對(duì)象自己了解如何操縱自身(當(dāng)被恰當(dāng)?shù)匾髸r(shí)).
你也許會(huì)說(shuō)我們傳遞一條消息給一個(gè)對(duì)象,那些消息就會(huì)調(diào)用某類行為或者做有意義的回復(fù).這些都會(huì)在我們無(wú)需了解或關(guān)心這個(gè)對(duì)象內(nèi)部
工作機(jī)制的情況下發(fā)生.為我們所允許的可讓其執(zhí)行的作業(yè)(或等價(jià)的,它能聽懂的消息)就是對(duì)象的方法. 

在ruby里,我們通過(guò)點(diǎn)(dot notation,正如C++或Java)來(lái)調(diào)用一個(gè)對(duì)象的方法.被調(diào)用的對(duì)象在點(diǎn)的左方給出.

ruby> "abcdef".length
   6  


表面上看,這一字符串被問(wèn)及其長(zhǎng)度.技術(shù)上看,我們正調(diào)用對(duì)象"abcdef"的length方法.

其它的對(duì)象也許擁有一個(gè)稍有不同的length接口,或者根本沒有.消息的如何應(yīng)答在程序運(yùn)行期間做決定,行為也取決于其所指變量.

ruby> foo = "abc"
   "abc"
ruby> foo.length
   3
ruby> foo = ["abcde", "fghij"]
   ["abcde", "fghij"]
ruby> foo.length
   2  


length的意義也會(huì)隨對(duì)象的變化而改變.在上例中,第一次我們叫foo返回其長(zhǎng)度,它對(duì)應(yīng)于一個(gè)簡(jiǎn)單字符串,這里也就只有一種合理的答案.第二次,foo代表一個(gè)數(shù)組,我們也許會(huì)考慮其長(zhǎng)度為2,5或10;但一般情況下最合適的答案當(dāng)然是2(其它類型長(zhǎng)度也應(yīng)被很容易的猜出).

ruby> foo[0].length
   5
ruby> foo[0].length + foo[1].length
   10  


這里需注意的是一個(gè)數(shù)組了解其自身作為一個(gè)數(shù)組的意義.Ruby中的一部分代碼賦予了他們這一性質(zhì),因此對(duì)他們的需求可以自動(dòng)的通過(guò)各種
適當(dāng)?shù)姆椒▽?shí)現(xiàn).由于相當(dāng)少量的對(duì)應(yīng)于我們?cè)谧匀徽Z(yǔ)言中所表達(dá)概念的方法名能被不同種類的數(shù)據(jù)如我們所愿地采用,這便將程序員從大量特殊函數(shù)名中解脫出來(lái).OO編程語(yǔ)言的這一特點(diǎn)(在我看來(lái),Java的這一點(diǎn)做的并不是很好)叫做多態(tài)(polymorphism). 

當(dāng)一個(gè)對(duì)象碰到一個(gè)不能理解的信息,一個(gè)錯(cuò)誤便會(huì)"發(fā)生":

ruby> foo = 5
   5
ruby> foo.length
ERR: (eval):1: undefined method `length' for 5(Fixnum)  


所以我們就需要了解什么方法是被這一對(duì)象所接受的,雖然我們并不需要了解這個(gè)方法是如何工作的.

如果要給方法賦參數(shù),參數(shù)應(yīng)在一對(duì)括號(hào)內(nèi),

object.method(arg1, arg2) 


如果不會(huì)引起歧義,括號(hào)可以去掉.

object.method arg1, arg2 


Ruby里有個(gè)特殊變量self;它指向任意調(diào)用方法的對(duì)象.由于"self"經(jīng)常用到,為了方便它可被省掉:

self.method_name(args...) 


和這一樣

method_name(args...) 


我們傳統(tǒng)意義上的函數(shù)調(diào)用只不過(guò)是self方式調(diào)用的一種簡(jiǎn)寫罷了.這也使Ruby可以叫作一種純正的面向?qū)ο笳Z(yǔ)言.當(dāng)然,為了那些搞不清在Ruby里函數(shù)調(diào)用其實(shí)就是對(duì)象方法的人,函數(shù)化的方法看起來(lái)很像在別的語(yǔ)言中的函數(shù).如果我們喜歡,我們也可以叫它們函數(shù),就仿佛他們不是真的對(duì)象方法一樣.  
 

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《rudy 方法 分析》,本文關(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)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    彝良县| 大丰市| 堆龙德庆县| 若羌县| 安国市| 榆树市| 鄂伦春自治旗| 如东县| 涞水县| 苍溪县| 佳木斯市| 南部县| 庆元县| 读书| 新兴县| 高邮市| 股票| 邵武市| 隆德县| 海安县| 齐齐哈尔市| 康定县| 江安县| 会泽县| 和田县| 舒城县| 赣州市| 泰来县| 双城市| 马鞍山市| 满洲里市| 太和县| 准格尔旗| 班玛县| 松原市| 伊宁市| 和田县| 邹城市| 观塘区| 阿鲁科尔沁旗| 崇信县|