在Ruby中,关键字“do”的含义是什么?

19

我在 Ruby 中看到了一些 do,但我找不到一个真正好的解释它的目的。例如,我见过一个 do 出现在 gemfile 中:

group :development, :test do
    gem 'rspec-rails'
    gem 'rspec-its'
    gem 'simplecov', :require => false
    gem 'guard-rspec'
    gem 'spork-rails'
    gem 'guard-spork'
    gem 'childprosess'
    gem 'rails-erd'
    gem 'pry-rails'
    gem 'guard-rails'
    gem 'guard-livereload'
    gem 'guard-bundler'
end

我知道这段代码的作用,但我不知道do的目的。我有我的猜测,但我希望得到一个比我更了解的人的确认或否认。

3个回答

17

do ... end(或者是 { ... })创建了一个所谓的块(block),它是 Ruby 中一种匿名函数。在你的例子中,该块作为参数传递给了groupgroup 然后进行一些记录工作,将给定组设为活动状态,执行该块,然后再次取消活动状态。


5

1
do 也用于 whileuntilfor/in 循环中,来将循环条件与循环主体区分开,就像 then 关键字在 ifunlesscase 表达式中使用一样。 - Jörg W Mittag

5

这是一个。在其他编程语言中,你需要使用大括号来表示,像这样:{}。但在Ruby中,你可以使用:

do

  #something code

end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接