红宝石中关键字"do"的含义是什么?

Mii*_*rio 11 ruby rubygems ruby-on-rails

do在Ruby中看过几个,我找不到对它的目的的一个非常好的解释.例如,我看到的地方dogemfile:

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
Run Code Online (Sandbox Code Playgroud)

我知道这段代码的作用,但我不知道它的目的do.我有我的猜测,但我希望他们被比我更了解的人证实或否认.

sep*_*p2k 8

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


use*_*001 5

所述do关键字被用于连同end关键词来分隔一个码块。

do end可以在此处找到有关带括号区别的更多信息:http : //ruby-doc.org/docs/keywords/1.9/files/keywords_rb.html#M000015


Bar*_*dys 5

block在其他编程语言中,您使用括号,如下所示:{}。在ruby你可以使用:

do

  #something code

end
Run Code Online (Sandbox Code Playgroud)