0

我无法理解断点在这个 do 循环中的位置。为什么代码只是不继续运行?

def nearest_larger(arr, idx)
  diff = 1
  loop do
    left = idx - diff
    right = idx + diff

    if (left >= 0) && (arr[left] > arr[idx])
      return left
    elsif (right < arr.length) && (arr[right] > arr[idx])
      return right
    elsif (left < 0) && (right >= arr.length)
      return nil
    end

    diff += 1
  end
end
4

3 回答 3

7

因为有return说法。

大概在某个时候满足其中一个条件并且函数退出。

于 2013-05-30T17:17:10.877 回答
2

return语句立即停止函数,并返回提供的值。

于 2013-05-30T17:17:44.170 回答
2

return关键字一旦为真就会停止运行块

于 2013-05-30T17:19:14.857 回答