我有一個類Autodrop,它包含幾個方法,a.o. '元數據',它調用一個外部API(Dropbox)。他們很慢。 但是,當初始化AutodropImage時,我已經經常擁有這些元數據,所以我應該讓這些方法更加智能。替代初始化一個類,以避免處理已知信息
我心目中是這樣的:
class Autodrop
include Dropbox
attr_reader :path
def initialize(path)
@path = path
end
def self.from_entry(drop_entry)
@drop_entry = drop_entry
self.initialize(@drop_entry.path)
end
def metadata
if @drop_entry = nil
return heavy_lifting_and_network_traffic
else
return @drop_entry.metadata
end
end
#...
end
現在,我希望打電話
entry = BarEntry.new()
foo = Autodrop.from_entry(entry)
foo.metadata
爲了避免提重物和網絡流量的呼叫。
但這不起作用。不管怎樣,在我的新手中,我肯定我對這一切都是錯誤的。 是否有一個術語我應該首先查找並閱讀?你會如何去做這件事?
請注意,這些示例已經過簡化:在我的代碼中,我繼承AutodropImage,例如Autodrop,這是從AutodropGallery < Autodrop中調用的。後者已經知道AutodropImage的所有元數據,所以我主要希望避免AutodropImage再次重負。
這就是我雖然。但是,我沒有提到這是在Sinatra中使用的。我被告知class @@變量在所有用戶/線程中共享。但我可能會在那裏誤導。 – berkes 2010-06-04 09:31:30
但您沒有使用您正在使用實例變量的類變量 – nas 2010-06-04 11:16:07