Следующий код работает нормально:
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
но если я добавлю return
внутри блока if, я получу ошибку:
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
Ошибка из приведенного выше кода:
unexpected return (LocalJumpError)
Может кто-нибудь объяснить это? Я подумал, что return
может быть дополнительно использован везде, где уже есть предположение о возвращаемом значении.