Следующий код работает отлично:Почему ключевое слово return вызывает проблемы в моем «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
, но если добавить return
внутри «если блок», я получаю сообщение об ошибке:
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
может быть необязательно использован везде, где уже есть предположение о возвращаемом значении.