一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Ruby - ruby 存取器 概念

ruby 存取器 概念

2020-04-10 14:56ruby教程網 Ruby

什么是一個存取器? 我們在前面已經討論過實變量了,但卻未過多的討論.一個對象的實變量屬于它的屬性,也是它與其它來自同一個類的對象的一般區別.讀寫它的屬性是重要的;這樣做需要做一個叫著屬性存取器(attributeaccessors)的方法

什么是一個存取器?

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

ruby>classFruit

|defset_kind(k)#awriter

|@kind=k

|end

|defget_kind#areader

|@kind

|end

|end

nil

ruby>f1=Fruit.new

#

ruby>f1.set_kind("peach")#usethewriter

"peach"

ruby>f1.get_kind#usethereader

"peach"

ruby>f1#inspecttheobject

#

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

ruby>classFruit

|defkind=(k)

|@kind=k

|end

|defkind

|@kind

|end

|end

nil

ruby>f2=Fruit.new

#

ruby>f2.kind="banana"

"banana"

ruby>f2.kind

"banana"

inspect方法

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

ruby>classFruit

|definspect

|"afruitofthe"+@kind+"variety"

|end

|end

nil

ruby>f2

"afruitofthebananavariety"

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

#Thesetwolinesareequivalent:

panObject

printanObject.inspect,"\n"

生成存取器的簡單方法

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

Shortcut縮寫Effect等同于

attr_reader:vdefv;@v;end

attr_writer:vdefv=(value);@v=value;end

attr_accessor:vattr_reader:v;attr_writer:v

attr_accessor:v,:wattr_accessor:v;attr_accessor:w

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

ruby>classFruit

|attr_accessor:condition

|definspect

|"a"+@condition+@kind"

|end

|end

nil

ruby>f2.condition="ripe"

"ripe"

ruby>f2

"aripebanana"

更有趣的水果

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

ruby>classFruit

|deftime_passes

|@condition="rotting"

|end

|end

nil

ruby>f2

"aripebanana"

ruby>f2.time_passes

"rotting"

ruby>f2

"arottingbanana"

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

ruby>f3=Fruit.new

ERR:failedtoconvertnilintoString

是inspect方法在這里挺有理由地抱怨.我們已讓它報告水果的品種和狀態,但f3還未賦過任何值.如果我們愿意,我們可以重寫inspect方法使之用define?方法測試實變量并只在它們存在時才報告,但也許那不是很有用;因為每一個水果都有類型和狀態.看來我們應該在某種程度上確定其屬性.這正是下一節我們要討論的.

延伸 · 閱讀

精彩推薦
  • RubyRuby簡潔學習筆記(一):字符串、數字、類和對象

    Ruby簡潔學習筆記(一):字符串、數字、類和對象

    這篇文章主要介紹了Ruby簡潔學習筆記(一):字符串、數字、類和對象,本文是學習筆記第一篇,需要的朋友可以參考下 ...

    腳本之家2472020-04-20
  • RubyRuby設計模式編程中使用Builder建造者模式的實例

    Ruby設計模式編程中使用Builder建造者模式的實例

    這篇文章主要介紹了Ruby設計模式編程中使用Builder建造者模式的實例,建造者模式將一個復雜對象的構造與它的表示分離,使同樣的構建過程可以創建不同的表...

    范孝鵬2192020-05-07
  • RubyRuby環境下安裝使用bundler來管理多版本的gem

    Ruby環境下安裝使用bundler來管理多版本的gem

    這篇文章主要介紹了Ruby環境下安裝使用bundler來管理多版本的gem的方法,舉了Ruby On Rails中的應用實例來進行演示,需要的朋友可以參考下 ...

    日拱一卒4332020-05-10
  • RubyRuby迭代器的7種技巧分享

    Ruby迭代器的7種技巧分享

    這篇文章主要介紹了Ruby迭代器的7種技巧分享,Ruby中的迭代器非常人性化,本文既是講解了7個技巧也是講解了7種迭代器,需要的朋友可以參考下 ...

    腳本之家4782020-04-20
  • RubyRuby進行文件信息輸出實例代碼

    Ruby進行文件信息輸出實例代碼

    Ruby進行文件信息輸出實例代碼,數據是隨機的,所以每次的記錄都會不同。 ...

    ruby教程網2962020-04-10
  • Ruby剖析 Ruby 訪問控制

    剖析 Ruby 訪問控制

    前面,我們說 Ruby 沒有函數,只有方法.而且實際上有不止一種方法.這一節我們介紹 訪問控制 (accesscontrols). 想想當我們在最高層而不是在一個類的定義里定義...

    ruby教程網3572020-04-08
  • Ruby簡要說明Ruby中的迭代器

    簡要說明Ruby中的迭代器

    這篇文章主要介紹了Ruby中的迭代器,迭代器的概念在動態語言的編程中十分重要,文章中介紹了Ruby中的each迭代器和collect迭代器,需要的朋友可以參考下 ...

    goldensun2772020-04-25
  • RubyCentOS中配置Ruby on Rails環境

    CentOS中配置Ruby on Rails環境

    經過一個上午的折騰,終于把ROR環境在CentOS中搞定,繞了很多彎路,把文章寫下來總結一下 ...

    可樂加糖4762020-04-12
主站蜘蛛池模板: 91制片厂果冻星空传媒3xg | 黄瓜视频黄 | 欧美亚洲国产一区二区三区 | 久久亚洲精品AV无码四区 | 福利视频久久 | 无限在线观看视频大全免费高清 | 色香视频在线 | 久久黄色大片 | 青青久久精品国产 | 极品奶妈漫画 | 国产午夜永久福利视频在线观看 | 免费精品99久久国产综合精品 | 惊弦45集免费看 | 欧美人与日本人xx在线视频 | 沉沦艳妇杨幂肉体小说 | 国产成人性毛片aaww | 奶茶视频有容乃大 | 欧美性欲 | 日本不卡一区二区三区在线观看 | 西施打开双腿下面好紧 | 成人动漫影院 | 国产精品酒店视频免费看 | haodiaocao几万部精彩视频 | 四虎影在线永久免费观看 | 999资源站| 国产专区亚洲欧美另类在线 | 午夜精品在线 | 色姑娘导航 | 牛牛色婷婷在线视频播放 | 国产精品青青青高清在线密亚 | 免费被黄网站在观看 | 国产亚洲精品九九久在线观看 | 欧美亚洲国产精品久久第一页 | 成人区精品一区二区毛片不卡 | 精品国产欧美一区二区五十路 | 手机亚洲第一页 | 天天操丝袜 | 美女大鸡鸡 | 好大好硬好紧太深了受不了 | 天堂漫画破解版 | 欧美成年黄网站色高清视频 |