以下是一本书的例子:
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
。怎么可能,为什么会这样呢?
答案 0 :(得分:14)
此行attr_reader :unique, :index
为属性
getter
def unique
@unique
end
您在第unique.size - 1
行中看到的是对getter的方法调用,然后访问它的size
属性。
答案 1 :(得分:6)
attr_reader :unique
电话会在@unique
处公开提供unique
访问者。尽管如此,作者使用@unique
和unique
进行混合和匹配是一个奇怪的选择。