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

时间:2016-09-10 15:32:27

标签: ruby-on-rails ruby rubygems

我在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 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:4)

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

有关do end与括号的区别的更多信息,请点击此处:http://ruby-doc.org/docs/keywords/1.9/files/keywords_rb.html#M000015

答案 2 :(得分:3)

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

do

  #something code

end