Le code suivant fonctionne très bien:Pourquoi le mot-clé return provoque-t-il des problèmes dans mon 'if block'?
person = {:a=>:A, :b=>:B, :c=>:C}
berson = {:a=>:A1, :b=>:B1, :c=>:C1}
kerson = person.merge(berson) do | key, oldv, newv |
if key == :a
oldv
elsif key == :b
newv
else
key
end
end
puts kerson.inspect
mais si j'ajoute return
à l'intérieur du "si le bloc", je reçois une erreur:
person = {:a=>:A, :b=>:B, :c=>:C}
berson = {:a=>:A1, :b=>:B1, :c=>:C1}
kerson = person.merge(berson) do | key, oldv, newv |
if key == :a
return oldv
elsif key == :b
return newv
else
return key
end
end
puts kerson.inspect
L'erreur du code ci-dessus est:
unexpected return (LocalJumpError)
Quelqu'un peut-il expliquer cela? Je pensais que return
pourrait être utilisé en option là où il y a déjà l'hypothèse d'une valeur retournée.