函数没有 return,很奇怪
function doesn't return, very weird
我有一个获取元素数组的函数,然后它遍历该数组,当找到预期的元素时它会中断并 return。
函数是这样的:
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?
离开 MyService 我 运行 这个:
def get_expected_element(id:, name:)
# I am sure there are 3 elements got
# elem_array = get_all_elements(id)
elem_array = ["elem1", "apple", "elem3"]
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 get_expected_element(id: 3, name: "apple")
得到这个:
elem = elem1
elem = apple
Found element
=== return ===
apple
您的 get_expected_element 方法似乎不错。
我有一个获取元素数组的函数,然后它遍历该数组,当找到预期的元素时它会中断并 return。
函数是这样的:
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?
离开 MyService 我 运行 这个:
def get_expected_element(id:, name:)
# I am sure there are 3 elements got
# elem_array = get_all_elements(id)
elem_array = ["elem1", "apple", "elem3"]
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 get_expected_element(id: 3, name: "apple")
得到这个:
elem = elem1
elem = apple
Found element
=== return ===
apple
您的 get_expected_element 方法似乎不错。