在ruby中,運算子操作實際上也是方法呼叫,於是,我們就可以避免繁瑣的get,set方法了:
class book
def initialize(name)
@name =name
enddef name
@name
enddef name=(new_name)
@name=new_name
endend
但是如果屬性比較多的話,又會出現一大堆方法,這自然是ruby所不取的。於是又有了如下的簡化:
class book
attr_reader :name
attr_writer :name
def initialize(name)
@name=name
endend
或者進一步簡化成:
class book
attr_accessor :name
def initialize(name)
@name=name
endend
這樣我們就可以來進行方法呼叫,如下所示:
book = book.new("ruby")
puts book.name
book.name="python"
puts book.name
但是如果要在物件內部對其屬性進行訪問的話,就不能用attr_writer了,它會預設的把表示式左側的變數當作區域性變數來處理,而非物件屬性。解決的方法有兩種,一種是如initialize方法那樣,使用@name來訪問,還有一種是使用self.name來訪問,如下所示:
class book
attr_accessor :name
def initialize(name)
@name =name
enddef refresh
self.name="new book"
endend
ruby學習筆記 2 訪問控制
class singleton 公開的 預設不宣告許可權的物件都是公開的 initialize除外,它總是私有的 public def publicmethod puts this is a public method end 私有的 private def privatemethod puts t...
Ruby 學習筆記 1 有疑問
puts 演示while not a 1while not a 10 print a,a 1 endputs for i in 1.10 print i,endputs puts 演示break c a for i in 1.4 if i 2 and c a c b print n break en...
ruby學習筆記 1 初識語法
雖然ruby ruby on rails從2007年就一直獲獎無數,但身為乙個中國人,一直對小日本創造的東西不怎麼感興趣,想想其實也沒必要,技術本身是無國界的,日本其實也有值得學習的地方 扯遠了,呵 單從技術而言,ruby本身確實很爽,令程式設計師的工作變得輕鬆有趣!下面的 演示了如何找出100以內...