| 赞 | 0 |
| VIP | |
| 好人卡 | |
| 积分 | 1 |
| 经验 | |
| 最后登录 | 2018-1-20 |
| 在线时间 | 704 小时 |
- 梦石
- 0
- 星屑
- 52
- 在线时间
- 704 小时
- 注册时间
- 2011-12-27
- 回帖
- 858
|
发表于 2014-12-30 22:30:11
|
显示全部楼层
本帖最后由 zeldafd 于 2014-12-30 22:33 编辑
@是類變量, 是指可於一個類之內使用的變量- class ABC
- def initialize
- @text = "abc"
- end
- def get_text
- return @text #可以在這裡叫上面那個已定義的類變量
- end
- end
复制代码 但是, 類變量在沒有使用attr_accessor、attr_reader或attr_write時, 則不能夠於外面被讀取或寫入
(其實它就是一個私有的變量, 在定義了GETTER和SETTER就能夠好好的讀取和寫入了
- def initialize(test)
- @test = test
- end
- def test #等同使用attr_reader, 即是getter, 或隨便叫作讀取器吧
- return @test;
- end
- def test=(test) #等同使用attr_writer, 即是setter, 或隨便叫作寫入器吧
- @test = test;
- end
复制代码 )
簡言之就是一個類的變量...(被揍
好吧, 類變量在使用了attr_accessor後就能以這樣的方式被其他類讀取
- class A
- attr_accessor :test
- def initialize
- @test = "test"
- end
- end
- $A = A.new
- $A.test
- #應該是這樣吧, 我也好久沒用RUBY了=,=
复制代码 此時test就變成了A的一個屬性一樣了,
以個人性化點的例子:
- class Person
- attr_accessor :name
- attr_accessor :gender
- attr_accessor :age
-
- def initialize
- @name = "- NO NAME -"
- @gender = "?"
- @\age = 0 #不知為什麼會自動tag到人...所以加了個反鈄槓...
- end
- end
- $me = Person.new
- $me.name = "RedSuns S.H.Chan" #RedSuns是我的英文名
- $me.gender = "M" #這是男的意思, 不代表我是個M, 你明的
- $me.age = 17
- #這就是我的屬性了~
复制代码 當你不想這個屬性被外界的類修改, 但又想被人讀取, 就使用attr_reader好了
但又只想被人寫入, 不想被外界知道實際的值就用上attr_writer吧(用於些接受資料和處理的類, 等遲點知道什麼叫MVC你就會明白了)
大概是這樣吧, 總覺得寫的很沒條理==
希望LZ不會覺得太亂吧Orz |
评分
-
查看全部评分
|