[問題] 關於 類別方法 attr_reader

看板Ruby作者 (邪惡美麗)時間8年前 (2015/11/02 13:58), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/2 (看更多)
你們好, 我想請問,在ruby裡面的attr_reader ..等方法。 如以下範例: ----------------------------------------------- class Person attr_accessor :name def initialize(name) @name = name end end ----------------------------------------------- 為何 定義 attr_accessor時,會知道 :name 這個變數是指向 實例變數@name呢? 如果在類別裡面定義了 其他變數,如類別變數,全域變數 等。 attr_accessor還會知道是指向@name嗎? 還是在ruby裡面,存取器一定就是預設是 實例變數? 謝謝你們了,查了資料還是不太懂.. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 117.56.105.46 ※ 文章網址: https://www.ptt.cc/bbs/Ruby/M.1446443921.A.C18.html

11/02 15:21, , 1F
Ruby可以動態定義方法 其實使用屬性存取也是定義方法
11/02 15:21, 1F

11/02 15:23, , 2F
可以想像成eval("def #{sym}=(val);@#{sym}=val;end")
11/02 15:23, 2F

11/02 15:24, , 3F
eval("def #{sym});return @#{sym};end") 上面寫這行讀
11/02 15:24, 3F

11/02 15:26, , 4F
在attr_accessor中會定義name和name=(val)
11/02 15:26, 4F

11/06 12:44, , 5F
name?
11/06 12:44, 5F
文章代碼(AID): #1MDlkHmO (Ruby)
文章代碼(AID): #1MDlkHmO (Ruby)