Ich frage mich, warum die folgenden Tag-Methoden zu unterschiedlichen Ergebnissen führen:Ruby-Iterator Ausbeute
Methode 1:
def tag(html)
print "<#{html}>#{yield}</#{html}>"
end
Methode 2:
def tag(html)
print "<#{html}>"
print yield
print "</#{html}>"
end
Wenn ich den folgenden Code lief in Terminal unter Verwendung der obigen Methoden:
tag(:ul) do
tag(:li) { "It sparkles!" }
tag(:li) { "It shines!" }
tag(:li) { "It mesmerizes!" }
end
Die erste gab mir:
<li>It sparkles!</li><li>It shines!</li><li>It mesmerizes!</li><ul></ul>
Die zweite gab mir:
<ul><li>It sparkles!</li><li>It shines!</li><li>It mesmerizes!</li></ul>
Die zweite ist die Ausgabe, die ich suche.
Wie kommt es, dass die erste Methode 'yield' ausgibt, bevor sie das Ergebnis in der Zeichenkette ausgibt?
Die erste Methode ist die falsche, BTW. –
Ja, das wäre sinnvoller. Muss zu spät sein! – tadman