签出此代码和输出

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

我希望在执行了块之后,将执行Sure,因为Sure返回true,所以调用该方法的最终输出将为true.

推荐答案

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

Ruby相关问答推荐

在Glade创建的UI中以编程方式填充GtkTreeView

有没有办法把条件语句写得更干净?

关键字if是什么对象类型/类?

应用 ransack 日期字段过滤器后,相同的输出票证重复而不是一张

Ruby符号前面的-是什么意思?

厨师从源代码安装和更新程序

如何修改 Ruby gem

为什么 Range 在下降时不起作用?

如何判断是否安装了gem?

如何让 Ruby 解析时间,就好像它在不同的时区一样?

读取文件时如何避免 UTF-8 BOM

Ruby 中的 method_missing trap

在 jekyll 博客中支持标签的简单方法

如何通过匹配文本来 Select node

文字数字中的下划线是什么意思?

测试变量是否等于两个值之一

Ruby:捕获异常后继续循环

为什么我们在 Ruby 中有 0.0 和 -0.0?

Ruby 的 %q / %Q 引用方法的用例是什么?

我更改存储库 URL 后 Capistrano 部署失败