2013-03-19 78 views
4

這裏的示例從一本書的一個實例變量:訪問,而無需使用@符號

class TextCompressor 
    attr_reader :unique, :index 
    def initialize(text) 
    @unique = [] 
    @index = [] 
    add_text(text) 
    end 
    def add_text(text) 
    words = text.split 
    words.each { |word| add_word(word) } 
    end 
    def add_word(word) 
    i = unique_index_of(word) || add_unique_word(word) 
    @index << i 
    end 
    def unique_index_of(word) 
    @unique.index(word) 
    end 
    def add_unique_word(word) 
    @unique << word 
    unique.size - 1 
    end 
end 

add_unique_word筆者存取權限可變unique而不@符號(unique.size - 1)的方法。這怎麼可能,爲什麼這樣呢?

回答

11

此行attr_reader :unique, :index創造了getter的屬性:

def unique 
@unique 
end 

該行你unique.size - 1看到的是一個方法調用,吸氣,然後accesing它的size財產。

5

attr_reader :unique調用會添加一個訪問器,使@unique公開在unique。這是一個奇怪的選擇,作者使用@uniqueunique混合搭配。

相關問題