亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

ディレクトリ 検索
Ruby用戶指南 3、開始 4、簡單的例子 5、字符串 6、正則表達式 7、數(shù)組 8、回到那些簡單的例子 9、流程控制 10、迭代器 11、面向對象思維 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、哈希表(關聯(lián)數(shù)組) 13、類 14、數(shù)據(jù)庫 15、游戲對象 16、精靈的管理 17、窗口的管理 18、活動指令 19、場景類 Programming Ruby的翻譯 Programming Ruby: The Pragmatic Programmer's Guide 前言 Roadmap Ruby.new 類,對象和變量 容器Containers,塊Blocks和迭代Iterators 標準類型 深入方法 表達式Expressions 異常,捕捉和拋出(已經(jīng)開始,by jellen) 模塊 基本輸入輸出 線程和進程 當遭遇挫折 Ruby和它的世界 Ruby和Web開發(fā) Ruby Tk Ruby 和微軟的 Windows 擴展Ruby Ruby語言 (by jellen) 類和對象 (by jellen) Ruby安全 反射Reflection 內建類和方法 標準庫 OO設計 網(wǎng)絡和Web庫 Windows支持 內嵌文檔 交互式Ruby Shell 支持 Ruby參考手冊 Ruby首頁 卷首語 Ruby的啟動 環(huán)境變量 對象 執(zhí)行 結束時的相關處理 線程 安全模型 正則表達式 字句構造 程序 變量和常數(shù) 字面值 操作符表達式 控制結構 方法調用 類/方法的定義 內部函數(shù) 內部變量 內部常數(shù) 內部類/模塊/異常類 附加庫 Ruby變更記錄 ruby 1.6 特性 ruby 1.7 特性 Ruby術語集 Ruby的運行平臺 pack模板字符串 sprintf格式 Marshal格式 Ruby FAQ Ruby的陷阱
テキスト

什么是一個存取器?

我們在前面已經(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">?

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

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方法

一個小插曲.你已注意到當我們試著直接觀察一個對象,就會出現(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"?

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

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

生成存取器的簡單方法

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

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"?

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

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

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