Hem yöntem hem de değişken aynı ada sahipse, değişkeni kullanır.Yöntem ve değişken adı aynı
hello = "hello from variable"
def hello
"hello from method"
end
puts hello
o adını değiştirmeden yerine yöntemi kullanmak nedense mümkün mü?
Hem yöntem hem de değişken aynı ada sahipse, değişkeni kullanır.Yöntem ve değişken adı aynı
hello = "hello from variable"
def hello
"hello from method"
end
puts hello
o adını değiştirmeden yerine yöntemi kullanmak nedense mümkün mü?
bu deneyin: Bu arada
puts hello()
Doğru, ancak lütfen parantezleri kullanmanın neden bu işe yaradığını açıklayın: – Zabba
Açıkça bir yöntemi çağırıyorsunuz. Sadece daha iyi, bilirsin, ilk etapta farklı isimler kullan ... –
puts self.hello
, ben Henrik P. Hessel katılıyorum. Bu çok korkunç bir kod parçasıdır.
Yerel değişkenler ve yöntemler arasındaki belirsizlik, yalnızca alıcı mesajının argüman listesi olmadan gönderilmesiyle ortaya çıkar. Peki, çözüm açıktır: bir alıcı ya da bir argüman listesi sağlamak ya:
self.hello
hello()
Ayrıca bkz
Mükemmel cevap. – Zabba
Bu daha fazla bir yorum olduğunu cevap, ancak bir atama yöntemi kullanıyorsanız, yerel değişkenler ve yöntemler arasında ayrım yapmak çok önemlidir.
class TrafficLight
attr_accessor :color
def progress_color
case color
when :orange
#Don't do this!
color = :red
when :green
#Do this instead!
self.color = :orange
else
raise NotImplementedError, "What should be done if color is already :red? Check with the domain expert, and build a unit test"
end
end
end
traffic_light = TrafficLight.new
traffic_light.color = :green
traffic_light.progress_color
traffic_light.color # Now orange
traffic_light.progress_color
traffic_light.color # Still orange
Bunun için teşekkürler, bu bana sorun veriyordu. –
Neden kimse bunu yapmalı? –
@Henrik: Ruby'yi daha iyi tanımak istiyorum –
Yukihiro Matsumoto'nun (Ruby'nin yaratıcısı) “Ruby In A Nutshell” adlı kitabında geçen bu çok şey (diğer birçok harika şey arasında); O'Reilly tarafından yayınlanan). Kitap, tam olarak sorduğunuz soruların derinliğini cevaplamak için harika. – Zabba