2009-12-09 19 views

cevap

13

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ı.

+0

Çok teşekkürler Peter! Katılıyorum, sürümünüzü daha çok beğeniyorum. – Kevin

4

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ı

+0

Evet, bunlar iyi puanlar ... – Peter

+2

Aslında, salt * 5 yazarak alıcının * kendiliğini belirtmeden * bir yerel değişken oluşturacaktır. – Chuck

+0

@Chuck, bu fark etmediğim çok önemli bir nokta. Cevabımı değiştirdim. – Peter

2

. Bu, normal Ruby kuralına özel bir yöntemin açık bir alıcıyla çağrılmaması için bir istisnadır.

İlgili konular