如何确保在ruby工程

结帐这个代码和输出

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 

我期待在块被执行之后确保将被执行,并且由于确保返回true,所以调用方法的最终输出将是'true'。

保证块的返回值被丢弃 – 这只是一个方法来清理后,function做任何它应该(并返回适当的价值)。 原因是因为它允许你在函数体的不同位置放置几个return语句(或者raise语句),而不必在函数的不同位置复制清理代码。

请参阅此博客文章 ,了解如何ensure以隐式和显式方式返回行为。

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