Ich habe eine Funktion, die ein Array von Element erhält, dann iteriert es über das Array, wenn das erwartete Element gefunden wird, bricht es und kehrt zurück.Funktion kehrt nicht zurück, sehr seltsam
Die Funktion ist folgende:
def get_expected_element(id:, name:)
# I am sure there are 3 elements got
elem_array = get_all_elements(id)
element = nil
elem_array.each { |elem|
# I see this log
puts "elem = #{elem}"
if elem == name
element = elem
# I see this log too
puts "Found element"
break
end
}
# I see this log too, and program is hanging
puts "=== return ==="
element
end
Wenn ich die Funktion aufrufen, das Programm hängt nach puts "=== return ==="
:
service = MyService.new
element_got = service.get_expected_element(id:3, name:"apple")
# I don't see the below log
puts "#{element_got}, I don't see this, why?"
Die Log-in-Konsole ist dies:
elem = orange
elem = apple
Found element
=== return ===
<it is hanging>
Ich kann nicht verstehen, warum die aufgerufene Funktion nicht zurückkehrt.
Haben Sie eine explizite Rückgabeanweisung versucht? (d. h. Rückgabeelement) Ich verstehe nicht, warum das einen Unterschied macht, aber es ist zunächst einfach zu versuchen. – dean
Ja, versucht, das gleiche Problem –