W Ruby, podczas tworzenia nowej klasy, będziemy definiować metody konstruktora tak:Dlaczego możemy zdefiniować `# initialize` zamiast` :: new`
class Thing
def initialize
do_stuff
end
end
Jednak, gdy faktycznie tworzenia instancji obiekt nie znajduje się pod adresem initialize
na instancji, ale na klasie new
.
W związku z tym, dlaczego nie zdefiniujemy zamiast tego ::new
?
class Thing
def self.new
do_stuff
end
end
Czy istnieje coś ::new
robi beind kulisami że initalize
nie definiuje? Czy w ogóle są te dwie różne? Czy zdefiniowałbyś pracę w trybie ::new
? Czy tylko to, że def initialize
jest krótszy (nie) niż def self.new
?
Myślę, że musi istnieć dobry powód do rozbieżności.
http: //blog.sidu.w/2007/12/rubys-new-as-factory.html –