8

本からの例を次に示します。

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に変数にアクセスします。それはどのように可能であり、なぜそうなのですか?uniqueunique.size - 1

4

2 に答える 2

17

この行は、属性の をattr_reader :unique, :index作成しました:getter

def unique
 @unique
end

行に表示されているのunique.size - 1は、ゲッターへのメソッド呼び出しであり、そのsizeプロパティにアクセスしています。

于 2013-03-19T20:13:13.213 に答える
7

この呼び出しにより、で公開されattr_reader :uniqueているアクセサが追加されます。著者が両方を使用して組み合わせて一致させたのは奇妙な選択です。@uniqueunique@uniqueunique

于 2013-03-19T20:12:56.910 に答える