Các mã sau hoạt động tốt:Tại sao từ khóa trả về lại gây ra vấn đề trong 'if block' của tôi?
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
nhưng nếu tôi thêm return
bên trong "nếu khối", tôi nhận được một lỗi:
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
Các lỗi từ mã trên là:
unexpected return (LocalJumpError)
Có ai có thể giải thích điều này không? Tôi nghĩ rằng return
có thể được sử dụng tùy ý bất cứ nơi nào đã có giả định về một giá trị được trả về.