1
私は、要素の配列を取得し、期待される要素が見つかったときにそれが折り返して返されると、配列を反復処理する関数を持っています。関数は返されません。非常に奇妙です。
機能はこれです:私は、関数を呼び出すと
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
、プログラムは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?"
コンソールでログはこれです:
elem = orange
elem = apple
Found element
=== return ===
<it is hanging>
呼び出された関数が返されない理由を理解できませんか?
明示的なreturn文を試しましたか? (すなわち、戻り要素)。私はなぜそれが違いを生むかもしれないが、最初は何かを試してみるのは簡単なことを理解していない。 – dean
はい、試しました、同じ問題 –