代码之家  ›  专栏  ›  技术社区  ›  Roger

如何确保在ruby中工作

  •  44
  • Roger  · 技术社区  · 16 年前

    def lab
      yield
      ensure
        puts 'in ensure block'
        true
    end
    
    puts lab { puts 'inside inline block'; false }
    
    output is
    #inside inline block
    #in ensure block
    #false
    

    3 回复  |  直到 16 年前
        1
  •  70
  •   Ken Bloom    16 年前

    确保块的返回值被丢弃——这只是在函数执行任何应该执行的操作(并返回适当的值)后进行清理的一种方式。这样做的原因是,它允许您放置多个 return 声明(或 raise 语句)在函数体的不同位置,而不必在函数的不同位置复制清理代码。

        2
  •  14
  •   mikej heading_to_tahiti    4 年前

    this blog post 了解如何 ensure 同时具有隐式和显式返回。

        3
  •  0
  •   Yoann Le Touche    16 年前

    看起来你必须明确地返回true, ensure 可能不会自动返回最后一个值。

    推荐文章