Ruby ya da kamuya açık yöntem mi (kurucu)?Ruby class initialize (yapıcı) özel yöntem mi yoksa genel yöntem mi?
11
A
cevap
16
Bakalım:
class Test
def initialize; end
end
p Test.new.private_methods.sort.include?(:initialize)
Bu true
yazdırır, böylece initialize
özel bir yöntemdir. Bu mantıklıysa, nesne oluşturulduysa yalnızca new
sınıf yöntemiyle çağrılır. ancak basit değişken başlatma daha yaparsa sorunlara yol açabilecek böyle yapıcı kötüye kullanmasının
class Test
def initialize
@counter = 0
end
def reset!
initialize
end
end
: Biz istiyorsak, böyle bir şey yapabilir. Bir sınıftaki initialize
yöntemi, otomatik olarak Özel hale gelir.
4
kullanarak kontrol edebilirsiniz: `: (initialize)
puts ClassName.private_methods.sort
Ayrıca' obj.send 'tarafından bir nesnenin initialize' çağırabilir. –
@undur_gongor: Evet, bu herhangi bir özel yöntem için çalışıyor. –