Ruby bir nesnenin yapıcı olarak initialize
yöntemini kullanır. Rails çerçevesine özgü olmayan Ruby dilinin bir parçasıdır. Bir Class
üzerinde new
sınıf düzeyinde yöntemi çağırma
@person = Person.new
bu sınıfın bir tür ayırır, sonra da nesnenin initialize
yöntemini çağırır:
http://www.ruby-doc.org/core-1.9.3/Class.html#method-i-new
aşağıdaki gibi yeni bir nesne instanstiate zaman çağrılır
Tüm nesneler herhangi bir parametre kabul eden bir varsayılan initialize
yöntemine sahip (eğer yazmaya gerek yoktur - sen automagicallylar olsun). Nesnenin initialize
yönteminde farklı bir şey yapmasını istiyorsanız, kendi sürümünüzü tanımlamanız gerekir.
Örneğinizde, @name
ve @email
varsayılan değerlerini ayarlamak için kullanılabilecek initialize
yöntemine bir karma aktarıyorsunuz.
kullanabilirsiniz bu gibi:
@person = Person.new({name: 'John Appleseed', email: '[email protected]'})
başlatıcı özellikleri için varsayılan bir değer (attributes = {}
bir ampty karma varsayılan değerini ayarlar - {}
) sahiptir sebebi de kalmadan diyoruz ki böyledir argüman geçmek. Bir argüman belirtmezseniz, o zaman attributes
boş bir karma olacaktır ve bu nedenle @name
ve @email
her ikisi de nil
değerleri olacaktır (:name
ve :email
).
Birkaç nokta daha: 'initialize' işlevini kullanma mekanizması aslında bir Ruby değil bir Rails biridir. Öznitelikler için varsayılan değer olarak boş bir kareyi geçirme ('attributes = {}'), hash 'öznitelikleri [: name] # nil'de ayarlanmamış bir anahtara erişmeye çalışırken nilgolsüz olarak dönecektir - varsayılan değer yoksa ("initialize (attributes)" gibi bir yönteme ait özniteliğe erişme "attributes [: something] # error" gibi bir hata atacaktır. – tamersalama
İyi bir nokta - Ruby'nin bir parçası olduğunu ve Ruby belgelerine bağlı olduğunu açıklığa kavuşturmak için düzenlenmiştir. 'new' yöntemini ve' initialize'i nasıl çağırdığını açıklar. –
Michael ve tamersalama, bilgi için teşekkürler.Ancak şimdi başlatmayı anlıyorum.Online – jason328