0
我是通過Dalli's源代碼閱讀,我發現這個...爲什麼在ruby contsructor/initialize方法中調用超級兩次?
module ActionDispatch
module Session
class DalliStore < AbstractStore
def initialize(app, options = {})
# Support old :expires option
options[:expire_after] ||= options[:expires]
super
@default_options = { :namespace => 'rack:session' }.merge(@default_options)
@pool = options[:cache] || begin
Dalli::Client.new(
@default_options[:memcache_server], @default_options)
end
@namespace = @default_options[:namespace]
@raise_errors = [email protected]_options[:raise_errors]
super
end
.... rest of class definition
什麼脫穎而出,我是超被初始化時叫了兩聲。我從來沒有見過這種紅寶石成語。你爲什麼要這樣做?
取決於超類初始化器的實現,我猜。或者它可能是一個錯誤。 – Thomas
錯誤,或者他們特別需要在對實例變量進行更改後重新初始化(某些東西)。 –