Bir bloğun doğru veya yanlış olup olmadığını değerlendirmek için if yield self[x]
kullanıyorum. Bloğu isteğe bağlı yapmam gerekiyor ve önerileri yield if block_given?
yapmam gerekiyor. Bu iki satırı nasıl birleştirebilirim?Ruby'deki bir bloktan değer elde etmek için daha iyi bir yol var mı?
7
A
cevap
7
Bunu denediniz mi? Hiçbir blok verildiğinde
if block_given? && yield(self[x])
# ...
end
Bu durum her zaman, yani değerlendirmeye alınmayacaktır # ...
yerine ne olursa olsun başarısız olur. Eğer durum hiçbir blok verilirse başarılı olmak istiyorsanız, bunun yerine bunu:
if !block_given? || yield(self[x])
# ...
end
Ya da bu, ben okumak zor olduğunu düşünüyorum rağmen:
unless block_given? && !yield(self[x])
# ...
end
3
Dene:
if block_given?
if yield self[x]
# Do something....
end
end
0
Tüm koşulu, if
tüm bloğuna ekleyebilirsiniz:
if yield self[x]
# do something...
end if block_given?
İlgili konular
- 1. Açıklamalı bir yöntem elde etmek için daha verimli bir yol var mı?
- 2. Yükseltilmiş bir paylaşımlı bellek segmentinin varlığını kontrol etmek için daha iyi bir yol var mı?
- 3. daha iyi bir yol?
- 4. PHP'de POST değişkenlerini kontrol etmek için daha iyi bir yol var mı?
- 5. Çıkış yapmak için daha iyi ve/veya daha kolay bir yol var mı?
- 6. MSXML'den daha iyi bir IDOMImplementation var mı?
- 7. kullanarak kaynak dosyasından bir değer elde etmek için nasıl onun anahtar kullanarak kaynak dosyasından bir değer elde etmek için nasıl
- 8. PGResult boş olup olmadığını kontrol etmek için daha kısa bir yol var mı?
- 9. IPhone SDK'sında standart boyutlar elde etmek için programlı bir yol var mı?
- 10. C++ ile yazdırılan karakter sayısını elde etmek için basit bir yol var mı?
- 11. Performans: İstemci özelliklerinde bir satırı yorumlamak için daha iyi bir yol var mı?
- 12. GWT, tarih alanından değer elde etmek için
- 13. Linux'ta ekran koruyucuları engellemek için iyi bir yol var mı?
- 14. System.Net.WebClient.DownloadFileAsync() öğesinin indirme tamamlandığını kontrol etmek için meşgul beklemekten daha akıllı bir yol var mı?
- 15. HTTPS ... Çözüm veya daha iyi bir yol?
- 16. günün saatini ayıklamak için daha iyi bir yolu var mı?
- 17. Bunu yapmak için daha iyi bir şey var mı?
- 18. WebView yenilemek için daha iyi bir yolu var mı?
- 19. Python 3 bytes.index: daha iyi bir yol?
- 20. Kovaryans bildirmek için bir yol var mı?
- 21. bir listeden belirli bir değer elde etmek nasıl
- 22. Birden çok @ font yüzünü uygulamak için daha iyi bir yol var mı?
- 23. AngularJS: İki sözü eşleştirmek için daha iyi bir yol var mı?
- 24. Delphi - Eyalet kısaltmalarından eyalet kısaltmaları almak için daha iyi bir yol var mı?
- 25. Android: Veri tabanı girişini eklemek ve/veya güncellemek için daha iyi bir yol var mı?
- 26. C89'da typedef'd yapıları iletmek için daha iyi bir yol var mı?
- 27. Bir inşaat demiri klonlamadan önce yerel bir önbelleği kontrol etmek için herhangi bir yol var mı?
- 28. Gözlemlenebilir bir sıcak mı yoksa soğuk mu olduğunu kontrol etmek için bir yol var mı?
- 29. Öğeleri yakutta yinelenebilir bir şekilde sarmak için daha temiz, daha kısa, yerleşik bir yol var mı?
- 30. Angularjs ile bir tıklamayı nasıl tetikleyebilirim veya daha iyi bir yol var mı?
Neden anlatmak yerine, yapmaya çalıştığınız şeyi bize göstermiyorsunuz? Bu şekilde, bir şeyleri çekmeye çalışmak yerine kodunuzu düzeltebiliriz? –