Örnekler değişkenlerini Mixin olarak kullanılmak üzere bir modülde başlatmak için temiz bir yol var mı? - Bu hafif tahriş olduğunu ben her @member
düzgün her fonksiyonunda başlatıldı eğer tekrar tekrar kontrol etmek zorundaÖrnek değişkenleri Mixins içinde başlatılıyor
module Example
def on(...)
@handlers ||= {}
# do something with @handlers
end
def all(...)
@all_handlers ||= []
# do something with @all_handlers
end
def unhandled(...)
@unhandled ||= []
# do something with unhandled
end
def do_something(..)
@handlers ||= {}
@unhandled ||= []
@all_handlers ||= []
# potentially do something with any of the 3 above
end
end
Uyarı: Örneğin, ben şu var. Yazmayı çok isterim:
module Example
def initialize
@handlers = {}
@unhandled = []
@all_handlers = []
end
# or
@handlers = {}
@unhandled = []
# ...
end
Ve tekrar tekrar doğru şekilde başlatıldığından emin olmak zorunda değilsiniz. Ancak, bunu anlatabildiğimden mümkün değil.
initialize_me
yöntemini
Example
'a ekleyerek ve genişletilmiş Sınıftan
initialize_me
'u çağırmanın yanı sıra bunun çevresinde herhangi bir yolu var mı?
this example'u gördüm, ancak bunu gerçekleştirmek için hiçbir şeyi
Class
numaralı adama ekleyemem.
Mükemmel, teşekkürler - Bu konuda bir milyonlarca makale olmasına rağmen neden bir yerde bahsedilen bu yaklaşımı görmediğimi merak ediyorum. –
Ne yazık ki bu işe yaramıyor gibi görünüyor - 'example_ivar' referansı 'nil' olarak geri geliyor. –
Ah, anladım, teşekkürler - ancak bu, eğer sınıf zaten bir "initialize" yöntemi kullanıyorsa sorunlara neden olur, değil mi? –