最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

嘗試學習/理解Ruby setter和getter方法

嘗試學習/理解Ruby setter和getter方法

眼眸繁星 2019-10-19 16:34:54
我正在學習編程,因此決定嘗試Ruby。我確定這是一個愚蠢的問題,但是講師在談?wù)搒etter和getter方法,對此我感到困惑。這是示例:class Human  def noise=(noise)    @noise = noise  end  def noise    @noise  endend由此,該類被實例化,我可以將其輸出:man = Human.newman.noise=("Howdie!")puts man.noise這導致 Howdie!現(xiàn)在讓我感到困惑的是,講師說如果沒有g(shù)etter方法(這兩個方法中的第二個),就無法與實例變量@noise進行交互。但是當我刪除getter方法時,我仍然可以訪問@noise,請參見示例:class Human  def noise=(noise)    @noise = noise  endendman = Human.newputs man.noise=("Howdie!")這與使用getter方法時的工作原理相同。所以現(xiàn)在我很困惑。為什么需要吸氣劑?如果沒有實例變量,教員意味著什么呢?他可能正在使用舊版本的Ruby嗎?在此先感謝您的幫助。
查看完整描述

3 回答

?
牛魔王的故事

TA貢獻1830條經(jīng)驗 獲得超3個贊

代碼行


puts man.noise=("Howdie!")

不使用getter方法,因此不需要定義getter方法即可工作。該行僅使用setter方法。setter方法的返回值自動等于等號右側(cè)的值,因此“ Howdie!” 被傳給puts。


代碼行


puts man.noise

確實使用getter方法,如果刪除getter方法,它將無法正常工作。


查看完整回答
反對 回復 2019-10-19
?
婷婷同學_

TA貢獻1844條經(jīng)驗 獲得超8個贊

當然,它們都返回一個值,但是它們的行為是不同的。

假設(shè)已經(jīng)有一個成員@a 。

使用getter,@a無需修改即可獲取的當前值。

使用二傳手,可以修改@a并獲取其新值作為返回值。

在考慮二傳手的行為時,請注意:

  1. @a的舊值無法使用setter獲取,并被覆蓋。

  2. setter返回的內(nèi)容實際上是在調(diào)用setter之前就已經(jīng)知道的。


查看完整回答
反對 回復 2019-10-19
  • 3 回答
  • 0 關(guān)注
  • 719 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號