我在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