这个红宝石“循环”的断点在哪里?

时间:2013-05-30 17:15:54

标签: ruby loops

我无法理解断点在此循环中的位置。为什么代码不能继续运行?

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

3 个答案:

答案 0 :(得分:7)

因为有return个陈述。

据推测,在某些时候,其中一个条件得到满足并且函数退出。

答案 1 :(得分:2)

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

答案 2 :(得分:2)

return关键字一旦确定就会停止运行块