Ich habe if yield self[x]
verwendet, um auszuwerten, ob ein Block wahr oder falsch zurückgibt. Ich muss den Block optional machen, und ich sehe Vorschläge zu tun yield if block_given?
. Wie kann ich diese beiden Linien kombinieren?Gibt es einen besseren Weg, um einen Wert von einem Block in Ruby zu erhalten?
7
A
Antwort
7
Haben Sie das versucht?
if block_given? && yield(self[x])
# ...
end
Dieser Zustand wird immer fehlschlagen, wenn kein Block gegeben ist, das heißt, was anstelle von # ...
ist, wird nicht bewertet. Wenn Sie die Bedingung erfolgreich sein wollen, wenn kein Block gegeben ist, dies zu tun, statt:
if !block_given? || yield(self[x])
# ...
end
Oder diese, obwohl ich denke, es ist schwieriger zu lesen:
unless block_given? && !yield(self[x])
# ...
end
3
Versuchen:
if block_given?
if yield self[x]
# Do something....
end
end
0
Sie können eine Bedingung an den gesamten if
Block anhängen:
if yield self[x]
# do something...
end if block_given?
Verwandte Themen
- 1. Gibt es einen besseren Weg, um Rubys Basisklassen zu "affen"?
- 2. SQL-Subabfragen - gibt es einen besseren Weg
- 3. Gibt es einen besseren Weg (C#)?
- 4. Gibt es einen besseren Weg, um diese Auswahlabfrage
- 5. Gibt es einen besseren Weg, dies in Haskell zu tun?
- 6. Gibt es einen besseren Weg, dies zu tun?
- 7. Gibt es einen besseren, pythischen Weg, dies zu tun?
- 8. Gibt es einen besseren Weg, morgen Mitternacht zu finden?
- 9. Interface Vererbung/Hierarchien in .Net - gibt es einen besseren Weg?
- 10. Abfragen in Abfragen: Gibt es einen besseren Weg?
- 11. Gibt es einen besseren Austausch?
- 12. Dynamisch Wege finden, gibt es einen besseren Weg?
- 13. jQuery: add() Leistung; Gibt es einen besseren Weg?
- 14. SQL XML - existieren: Gibt es einen besseren Weg?
- 15. Gibt es einen besseren Weg, um einen Verweis auf einen Movieclip in ActionScript mit einer Zeichenfolge ohne Eval
- 16. Vagrant Virtualbox Openstack - oder gibt es einen besseren Weg?
- 17. Common Lisp Idiom - gibt es einen besseren Weg?
- 18. Große SQL-Tabelle. Gibt es einen besseren Weg als Ntext?
- 19. Gibt es einen besseren Weg (Leistung) berechnen Fibonacci als dieser?
- 20. Pythons Asyncore, um Daten periodisch über ein Variablen-Timeout zu senden. Gibt es einen besseren Weg?
- 21. Ich verwende ein verstecktes Eingabefeld, um Daten zu verschieben, gibt es einen besseren Weg?
- 22. Abschlussformular auf "Unschärfe" - Gibt es einen besseren Weg?
- 23. Gibt es einen alternativen/besseren Weg, um diese einfache Logik in Java zu machen?
- 24. Java's Process.exec, gibt es einen besseren Weg, damit umzugehen?
- 25. Gibt es einen besseren Weg, damit umzugehen? (Psql, mit TOAD)
- 26. Digital Root berechnen, gibt es einen besseren Weg?
- 27. Java Generic Frage: Gibt es einen besseren Weg?
- 28. Gibt es einen besseren Weg, um eine gemeinsame Eigenschaft eine Liste von Elementen in Linq
- 29. Gibt es einen besseren praktischen, konkreten Weg, um Javascript zu lernen?
- 30. Gibt es einen Weg mit Biopython, um die vollständige Zusammenfassung von einem Pubmed-Artikel zu erhalten?
Warum zeigen Sie uns nicht, was Sie vorhaben, anstatt es zu beschreiben? Auf diese Weise können wir Ihren Code reparieren, anstatt dass Sie etwas schuhen wollen? –