1

次のコードが与えられます:

class MagicList
  def items=(array)
    @items = array.map{|x| x*2}
  end

  def items
    @items
  end
end

list = MagicList.new
returns = list.items=([1, 2, 3])

puts returns.inspect    # => [1, 2, 3]
puts list.items.inspect # => [2, 4, 6]

と同様に両方がこの値を返すため、の値はreturnsであると予想しました。なんで?[2, 4, 6]@itemsarray.map{|x| x*2}[1, 2, 3]

4

1 に答える 1

8

setter=メソッドが何を返すかに関係なく、Ruby の割り当ては常に渡されたアイテムを返すためです。

class.property = x が x 以外のものを返すようにすることは可能ですか?も参照してください。

于 2012-07-13T13:35:29.453 に答える