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

因为 Ruby 赋值总是返回它们被传递的项,而不管setter=方法返回什么。

另请参阅是否有可能让 class.property = x 返回 x 以外的东西?

于 2012-07-13T13:35:29.453 回答