私は Ruby プログラミングは初めてで、インスタンス変数がその前に「@」記号なしで呼び出されている例をいくつか見てきました。
メソッドが呼び出され、クラス内の結果としてインスタンス変数がメソッドに格納されているattr_reader
ためか、インスタンス変数の理解が間違っているためかどうかはわかりません。
Russ Olsen の Eloquent Ruby から引用した例を次に示します。ここでは、@unique
配列のsize
前に「@」記号を付けずにメソッドが呼び出されています。
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