Wenn ich versuche, einen beliebigen Block each_with_object
Methode zu übergeben, wirft er einen Fehler:eine proc als Block auf ein Verfahren Passing
%w(foo bar baz).each_with_object([]) &->(i,m) { m << i.upcase }
# => NoMethodError: undefined method `&' for #<Enumerator: ["foo", "bar", "baz"]:each_with_object([])>
Wenn ich versuche, um einen Block zu inject
Methode zu übergeben, ist es auch erhöhen ein Fehler:
%w(foo bar baz).inject('') &->(m,i) { m + i.upcase }
# => NoMethodError: undefined method `' for "foo":String
Aber es funktioniert, wenn ich nicht einen Anfangswert übergeben:
%w(foo bar baz).split.inject &->(m,i) { m + i.upcase }
Und es funktioniert auch, wenn ich einen Block an each
Methode übergeben.
%w(foo bar baz).each &->(i) { puts i.upcase }
# FOO
# BAR
# BAZ
Kann jemand dieses Verhalten erklären? Wie kann ich willkürliche Blöcke an die ersten beiden Beispiele übergeben?
Was hat das mit der Code :: Blocks C++ IDE zu tun? –
@ JörgWMittag Leider habe ich dieses Tag versehentlich hinzugefügt. – sawa