Lorsque je tente de passer un bloc arbitraire à la méthode each_with_object
, elle soulève une erreur:Le passage d'un proc comme un bloc à une méthode
%w(foo bar baz).each_with_object([]) &->(i,m) { m << i.upcase }
# => NoMethodError: undefined method `&' for #<Enumerator: ["foo", "bar", "baz"]:each_with_object([])>
Lorsque je tente de passer un bloc à inject
méthode, il soulève aussi une erreur:
%w(foo bar baz).inject('') &->(m,i) { m + i.upcase }
# => NoMethodError: undefined method `' for "foo":String
Mais cela fonctionne si je ne passe pas une valeur initiale:
%w(foo bar baz).split.inject &->(m,i) { m + i.upcase }
Et cela fonctionne aussi quand je passe un bloc à la méthode each
.
%w(foo bar baz).each &->(i) { puts i.upcase }
# FOO
# BAR
# BAZ
Quelqu'un peut-il expliquer ce comportement? Comment puis-je passer des blocs arbitraires aux deux premiers exemples?
Qu'est-ce que cela a à voir avec l'IDE Code :: Blocks C++? –
@ JörgWMittag Désolé, j'ai ajouté cette balise par erreur. – sawa