Açıkça Ruby dönmek için iyi bir stil mi?
Gelen bir Python arka plan, orada her zaman bir "doğru yol" ("Pythonic") gelince, stil, merak ediyorum eğer aynı var Ruby. Kendi stil kuralları ama benim kaynak kodu serbest bırakmayı düşünmem kullanıyorum, ve mevcut herhangi bir yazılı olmayan kurallarına uymak istiyorum.
"Açıkça yöntemleri? return
türü" Ruby Yoludur Ve olmadan böyle bir şey yapıldığını görmüştüm, ama bunu yapmak için doğru bir yolu var mı? Belki de hakkı varzamanbunu yapmak için? Örneğin:
def some_func(arg1, arg2, etc)
# Do some stuff...
return value # <-- Is the 'return' needed here?
end
CEVAP
("") Cevap soru, ama cevap olarak benim iki kuruş atacağım. eski
Ama kesin bir dönüş "kullanarak, programcılar yabancı kod ile çalışmak, ya da Ruby bu özelliği aşina. için kafa karıştırıcı" Ruby yol olmayabilir
Örneğin bir sayı geçmiş bir ekler ve örnek bir değişkene atar gibi bir işlevi olabilir.
def plus_one_to_y(x)
@y = x 1
end
Bu bir değer verdiğini, ya da bir işlevi olması gerekiyordu? Gerçekten zor geliştirici örnek değişkeni atar hem olarak VE değer olarak tespit edilmiş demek döndürür ne demek.
Sanırım uzunca bir süre sonra başka bir programcı (belki de değil tanıdık ile nasıl Yakut mu verir dayalı son kod satırı idam) gelip istediği için bazı baskı tablolar için günlük ve işlevi haline gelir
def plus_one_to_y(x)
@y = x 1
puts "In plus_one_to_y"
end
Şimdi fonksiyonu bozulureğer bir şey bekliyor döndürülen bir değer. Eğer hiçbir şey döndürülen bir değer bekliyor, sorun yok. Eğer yere uzak, kod zincirine bir şey bu arama döndürülen bir değer bekliyor açıkçası, eğer bir numara almak değil gibi başarısız olacak.
Bu gerçek şimdi soru: her şeyi gerçekten döndürülen bir değeri olacağını mı sandın? Bu bir şey ya da bozmak değil mi? Gelecekte elbet bir şey çıkacak? Kim bilir? Tüm aramalar sadece tam kod Gözden Geçirme size bildiririz.
Bu yüzden (en azından benim için), en iyi uygulama yaklaşımı ise önemli bir şeyler dönüyor bu çok açık olmanız, ya da hiçbir şey, geri dönmek için.
Küçük demo fonksiyonu durumunda, bir değer vermek istediğimizi varsayarsak, bu şekilde yazılı olacaktır
def plus_one_to_y(x)
@y = x 1
puts "In plus_one_to_y"
return @y
end
Ve farkında olmadan bir değeri döndürür herhangi bir programcı için, ve onları kırmak için çok daha zor, çok açık olurdu.
Alternatif olarak, bu şekilde yaz ve return ifadesini bırak bir
def plus_one_to_y(x)
@y = x 1
puts "In plus_one_to_y"
@y
end
Ama neden? Neden sadece neler var içinde 0 net yapmak değil.
Nasıl Ruby bir dizinin bir bölümü geri...
Nasıl Krom XML yerine JSON dönmek için...
Nasıl stil için bir <select> sad...
Nasıl Ruby alt veya üst durumda bir di...
Nasıl Ruby rastgele bir sayı almak içi...