关键字 "do" ,在红宝石中是什么意思?



我在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的目的。我有我的猜测,但我希望这些猜测得到比我更了解的人的证实或否认。

do ... end(或者{ ... })创建了一个所谓的块,这是Ruby中的一种匿名函数。在您的示例中,该块作为参数传递给group。然后,group做一些簿记,将给定的组设置为活动状态,执行块,然后再次停用组。

do关键字与end关键字一起用于分隔代码块。

关于do end与括号的差异的更多信息可以在这里找到:http://ruby-doc.org/docs/keywords/1.9/files/keywords_rb.html#M000015

它是一个block在其他编程语言中你使用括号,像这样:{}。在ruby中,您可以使用:

do
  #something code
end