0

例如,我有:

class Camel
  attr_accessor :name, :meat_quality
  def initialize(name, meat_quality)
    name = @name
    meat_quality = @meat_quality
  end
end

我初始化了一个实例carlos,然后更改了它的@meat_quality值:

carlos = Camel.new("Carlos","orphan grade")

...

carlos.meat_quality = "public school grade"

@meat_quality不过,后来,我需要一种方法来引用第一次初始化时传递给的任何内容carlos(即"tough and stringy")。

我将@meat_quality多次更改,所以我不能只使用默认值或创建一个像previous_quality.

这可能吗?

4

1 回答 1

2

Ruby 中没有任何东西可以保存传递的初始值,因此 Ruby 中没有任何东西可以让您自动重置它。但是,您当然可以将值保存在另一个实例变量中并根据需要重置它,如下所示:

def initialize(..., meat_quality)
  ...
  @original_meat_quality = @meat_quality = meat_quality
end

def reset_meat_quality
  @meat_quality = @original_meat_quality
end
于 2013-06-25T02:36:03.580 回答