2013-06-25 44 views
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_qualitycarlos第一次初始化(即"tough and stringy")。

我將多次更改@meat_quality,所以我不能只使用默認值或創建像previous_quality這樣的變量。

這可能嗎?

+0

當然,這是可能的,但它是由你來實現它,這是非常微不足道的。 – meagar

+0

真是一個有用的答案!此外,下面的人說這是不可能的。顯示你所知道的呃? – user2493615

回答

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