Ich habe versucht, eine coding puzzle zu lösen: Nimm Strings und zähle diejenigen, die keine wiederholten Wörter enthalten.Ruby-Blöcke verhalten sich bei der Verwendung von "do" unerwartet.
Dieser Code funktioniert:
def validate(passphrase)
words = passphrase.split
words == words.uniq
end
passphrases = File.readlines("../input/passphrases.txt")
p passphrases.count {|phrase| validate(phrase)}
#=> 337
Wenn ich eine kleine Änderung mit dem Zählungsblock machen, sie alle der Paßphrasen zählt, anstatt nur diejenigen, die wahre zurückkehren würde, wenn sie durch den Block geführt:
p passphrases.count do |phrase|
validate(phrase)
end
#=>512
Was ist los?
@sawa, die Frage, die Sie verweisen fragt, ob 'do ... end' oder' {... } sollte im Allgemeinen verwendet werden, was anders ist als diese Frage, aber die ausgewählte Antwort auf die referenzierte Frage ist in der Tat die Antwort auf diese Frage. Ist das eine Dupe der früheren Frage? Interessant. –