Aşağıdakileri varsayalım:Self.attribute vs @attribute'un avantajları?
def create_new_salt
self.salt = self.object_id.to_s + rand.to_s
end
Neden 'kendini' kullanmak daha iyidir? '@salt' örnek değişkeninden ziyade?
Aşağıdakileri varsayalım:Self.attribute vs @attribute'un avantajları?
def create_new_salt
self.salt = self.object_id.to_s + rand.to_s
end
Neden 'kendini' kullanmak daha iyidir? '@salt' örnek değişkeninden ziyade?
self.salt =
kullanımı, tanımlanmışsa salt=
yönteminin kullanılmasına neden olur. Bu, salt=
yöntemindeki hata denetimi/dönüştürmelerinin kullanılmasını sağlamak için kullanışlıdır. Ancak, açık bir salt=
yöntemi (örneğin, attr_accessor
tarafından oluşturulan) olması gerektiği anlamına gelir ve bu mutlaka iyi bir fikir değildir.
Özet: özel bir salt=
yönteminiz varsa self.salt =
kullanın; @salt =
'u kullanarak, tam olarak ne istediğinizi @salt
olarak biliyorsanız ya da özel bir salt=
yönteminiz yoksa kullanın.
Son Not: @ başka yanıta Chuck'ın yorum, ben kaldırmak için bu modifiye ettik sayesinde: Muhtemelen DÜZENLEME
def create_new_salt
@salt = "#{object_id}#{rand}"
end
(o biraz daha açık Bence) bu gibi yazmak isterim self.
-ücretsiz kod - yanlıştı.
Peter'ın büyük yanıtının yanı sıra, genellikle Ruby'de attr_accessor
kullanıyorum ve self.attr = ve self.attr yerine @attr kullanıyorum.
Düzenleme: "self" olmadan, bir yerel değişken oluşturuyorsunuz. Amanın.
başka ilginç nokta self.salt=
tuz = yöntem özel olsa bile çağrılabilir olmasıdır: Peter cevabı ayrıntılı
. Bu, normal Ruby kuralına özel bir yöntemin açık bir alıcıyla çağrılmaması için bir istisnadır.
Çok teşekkürler Peter! Katılıyorum, sürümünüzü daha çok beğeniyorum. – Kevin