0
我想寫這2種方法,以便您可以輕鬆地在lazy
和eager
之間切換。紅寶石渴望和懶惰的初始化
例如:
class Foo
lazy :bar do
"@bar was initializated lazily"
end
eager :bar2 do
"@bar2 was initializated eagerly"
end
end
f = Foo.new
puts f.bar
# @bar was initializated lazily
puts f.bar2
# @bar2 was initializated eagerly
的lazy
方法是那種容易。它使用該名稱與attr_reader
方法創建一個「getter
」。並用塊的評估初始化變量。 這隻發生在你第一次調用''getter''。
但是現在我必須寫出eager
方法,這根本不容易,或者至少對我來說是不容易的。因爲,這種方法必須強制initialize
來評估eager
模塊的指令在之後,初始化過程完全結束了,我沒有任何想法。
我試過在每個eager
塊中擴展initialize
,但是它的對象還沒有初始化,所以沒有工作。你有什麼主意嗎?現在我正在考慮擴展new
方法,以便它調用另一個方法,它有一堆塊來正確評估和分配。但我認爲這有點危險。