国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

directory search
Ruby用戶指南 3、開始 4、簡單的例子 5、字符串 6、正則表達式 7、數(shù)組 8、回到那些簡單的例子 9、流程控制 10、迭代器 11、面向?qū)ο笏季S 12、方法 13、類 14、繼承 15、重載方法 16、訪問控制 17、單態(tài)方法 18、模塊 19、過程對象 20、變量 21、全局變量 22、實變量 23、局部變量 24、類常量 25、異常處理:rescue 26、異常處理:ensure 27、存取器 28、對象的初始化 29、雜項 RGSS入門教程 1、什么是RGSS 2、開始:最簡單的腳本 3、數(shù)據(jù)類型:數(shù)字 4、數(shù)據(jù)類型:常量與變量 5、數(shù)據(jù)類型:字符串 6、控制語句:條件分歧語句 7、控制語句:循環(huán) 8、函數(shù) 9、對象與類 10、顯示圖片 11、數(shù)組 12、哈希表(關(guān)聯(lián)數(shù)組) 13、類 14、數(shù)據(jù)庫 15、游戲?qū)ο?/a> 16、精靈的管理 17、窗口的管理 18、活動指令 19、場景類 Programming Ruby的翻譯 Programming Ruby: The Pragmatic Programmer's Guide 前言 Roadmap Ruby.new 類,對象和變量 容器Containers,塊Blocks和迭代Iterators 標準類型 深入方法 表達式Expressions 異常,捕捉和拋出(已經(jīng)開始,by jellen) 模塊 基本輸入輸出 線程和進程 當(dāng)遭遇挫折 Ruby和它的世界 Ruby和Web開發(fā) Ruby Tk Ruby 和微軟的 Windows 擴展Ruby Ruby語言 (by jellen) 類和對象 (by jellen) Ruby安全 反射Reflection 內(nèi)建類和方法 標準庫 OO設(shè)計 網(wǎng)絡(luò)和Web庫 Windows支持 內(nèi)嵌文檔 交互式Ruby Shell 支持 Ruby參考手冊 Ruby首頁 卷首語 Ruby的啟動 環(huán)境變量 對象 執(zhí)行 結(jié)束時的相關(guān)處理 線程 安全模型 正則表達式 字句構(gòu)造 程序 變量和常數(shù) 字面值 操作符表達式 控制結(jié)構(gòu) 方法調(diào)用 類/方法的定義 內(nèi)部函數(shù) 內(nèi)部變量 內(nèi)部常數(shù) 內(nèi)部類/模塊/異常類 附加庫 Ruby變更記錄 ruby 1.6 特性 ruby 1.7 特性 Ruby術(shù)語集 Ruby的運行平臺 pack模板字符串 sprintf格式 Marshal格式 Ruby FAQ Ruby的陷阱
characters

什么是一個存取器?

我們在前面已經(jīng)討論過實變量了,但卻未過多的討論.一個對象的實變量屬于它的屬性,也是它與其它來自同一個類的對象的一般區(qū)別.讀寫它的屬性是重要的;這樣做需要做一個叫著屬性存取器(attribute?accessors)的方法.我們將很快看到我們并不是總要明確地寫出存取器方法,但現(xiàn)在先讓我們了解所有的細節(jié).存取器的兩種類型是寫(writer)和讀(reader).

ruby>?class?Fruit
????|???def?set_kind(k)??#?a?writer
????|?????@kind?=?k
????|???end
????|???def?get_kind?????#?a?reader
????|?????@kind
????|???end
????|?end
???nil
ruby>?f1?=?Fruit.new
???#<Fruit:0xfd7e7c8c>
ruby>?f1.set_kind("peach")??#?use?the?writer
???"peach"
ruby>?f1.get_kind???????????#?use?the?reader
???"peach"
ruby>?f1????????????????????#?inspect?the?object
???#<Fruit:0xfd7e7c8c?@kind="peach">?

足夠簡單;我們可以存取關(guān)于我們搜索的水果種類的信息.但我們的方法名還有點兒牢騷.下面的這個更簡潔,也更方便.

ruby>?class?Fruit
????|???def?kind=(k)
????|?????@kind?=?k
????|???end
????|???def?kind
????|?????@kind
????|???end
????|?end
???nil
ruby>?f2?=?Fruit.new
???#<Fruit:0xfd7e7c8c>
ruby>?f2.kind?=?"banana"
???"banana"
ruby>?f2.kind
???"banana"?

inspect方法

一個小插曲.你已注意到當(dāng)我們試著直接觀察一個對象,就會出現(xiàn)一些像?#<anObject:?0x83678>?的東西.這只是個缺省的行為,我們可以自由地改變它.我們所要做的只是加一個名為?inspect?的方法.它會換一個更明了的描述對象的字符串,包括部分或全部的實變量.

ruby>?class?Fruit
????|???def?inspect
????|?????"a?fruit?of?the?"?+?@kind?+?"?variety"
????|???end
????|?end
???nil
ruby>?f2
???"a?fruit?of?the?banana?variety"?

一個相關(guān)的方法是to_s(轉(zhuǎn)化為字符串),用在打印對象的時候.一般的,你可以認為?inspect?是一個編寫或調(diào)試程序時用的工具,而?to_s?是一個美化程序輸出的方法.eval.rb顯示結(jié)果時總采用?inspect.?你可以用?p?方法簡單的從程序里取得調(diào)試信息.

#?These?two?lines?are?equivalent:
p?anObject
print?anObject.inspect,?"\n"?

生成存取器的簡單方法

因為許多實變量需要存取方法,?Ruby提供了對應(yīng)于標準方法的縮寫.

Shortcut縮寫??????????Effect等同于??
attr_reader?:v????????def?v;?@v;?end??
attr_writer?:v????????def?v=(value);?@v=value;?end??
attr_accessor?:v??????attr_reader?:v;?attr_writer?:v??
attr_accessor?:v,?:w??attr_accessor?:v;?attr_accessor?:w??

讓我們利用它加上"新鮮"信息.首先,我們自動生成了讀和寫方法,然后我們合并這一新信息到?inspect?中去:

ruby>?class?Fruit
????|???attr_accessor?:condition
????|???def?inspect
????|?????"a?"?+?@condition?+?@kind"
????|???end
????|?end
???nil
ruby>?f2.condition?=?"ripe"
???"ripe"
ruby>?f2
???"a?ripe?banana"?

更有趣的水果

如果沒人吃我們成熟的水果,也許我們該讓它們爛掉.

ruby>?class?Fruit
????|???def?time_passes
????|?????@condition?=?"rotting"
????|???end
????|?end
???nil
ruby>?f2
???"a?ripe?banana"
ruby>?f2.time_passes
???"rotting"
ruby>?f2
???"a?rotting?banana"?

但當(dāng)我們這樣做時,卻引入了一個小問題.現(xiàn)在,如果我們再創(chuàng)造第三個水果會發(fā)生什么?記住:實變量不會在賦值前存在.

ruby>?f3?=?Fruit.new
ERR:?failed?to?convert?nil?into?String?

是?inspect?方法在這里挺有理由地抱怨.我們已讓它報告水果的品種和狀態(tài),但?f3?還未賦過任何值.如果我們愿意,我們可以重寫inspect方法使之用?define??方法測試實變量并只在它們存在時才報告,但也許那不是很有用;因為每一個水果都有類型和狀態(tài).看來我們應(yīng)該在某種程度上確定其屬性.這正是下一節(jié)我們要討論的. 版權(quán)聲明:RUBY文檔中心的所有文章標明[原創(chuàng)]的均為本站作品,版權(quán)屬RUBY中文化計劃,若轉(zhuǎn)載請注明;標明[翻譯]的其外文版權(quán)歸原作者,譯文版權(quán)屬RUBY中文化計劃;標明[轉(zhuǎn)貼]的,若原作者感到侵犯了他的著作權(quán),那么請及時跟主持人聯(lián)系,我們會盡快更正。 ?
Previous article: Next article: