Wie mache ich den Klassenkonstruktor in Ruby privat?
class A
private
def initialize
puts "wtf?"
end
end
A.new #still works and calls initialize
und
class A
private
def self.new
super.new
end
end
nicht funktioniert insgesamt
Also, was ist der richtige Weg? Ich möchte new
privaten und rufen Sie es über eine factory-Methode.
InformationsquelleAutor der Frage Leonid Shevtsov | 2009-10-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Mehr auf APIDock
InformationsquelleAutor der Antwort adurity
Das zweite Stück code, Sie versucht ist fast richtig. Das problem ist
private
im Kontext von Instanz-Methoden anstelle der class-Methoden.Bekommen
private
oderprivate :new
zu arbeiten, die Sie gerade brauchen, um ihn zu zwingen, die im Zusammenhang mit der Klasse werden Methoden wie diese:Oder, wenn Sie wirklich wollen, zu definieren
new
- und call -super
Klasse-level-factory-Methoden Zugriff auf den privaten
new
ganz gut, aber zu instanziieren versucht, direkt mitnew
wird scheitern, weilnew
ist privat.InformationsquelleAutor der Antwort Nathan
Beleuchten den Einsatz, hier ist ein einfaches Beispiel für factory-Methode:
Dann verwenden Sie es als
Als erwartet, der Laufzeitfehler tritt bei der direkten
new
Verwendung:InformationsquelleAutor der Antwort Artru