Ruby on rails 什么是+;=%w在assets.rb中用于预编译资产的行中是什么意思?

Ruby on rails 什么是+;=%w在assets.rb中用于预编译资产的行中是什么意思?,ruby-on-rails,ruby,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 5,我正在查看Rails 5应用程序中放置在/config/initializers/assets.rb中的默认文件 为了预编译代码,注释中的Rails提供了一个预先存在的代码来一起预编译资产 Rails.application.config.assets.precompile += %w( search.js ) 我很好奇最后一部分是什么意思:+=%w(search.js),因为我从未见过Ruby或Rails中使用的表达式(+=%w)。我知道整行代码都在调用Rails类,将一些方法链接在一起以创

我正在查看Rails 5应用程序中放置在
/config/initializers/assets.rb
中的默认文件

为了预编译代码,注释中的Rails提供了一个预先存在的代码来一起预编译资产

Rails.application.config.assets.precompile += %w( search.js )
我很好奇最后一部分是什么意思:
+=%w(search.js)
,因为我从未见过Ruby或Rails中使用的表达式(
+=%w
)。我知道整行代码都在调用Rails类,将一些方法链接在一起以创建最终输出。但是我很好奇,+=%w做了什么,它是如何影响我假定的参数(
search.js
)的

等于做

Rails.application.config.assets.precompile = Rails.application.config.assets.precompile + ['search.js']
要分解它,
+=
只是在语句中包含左侧的常规运算符。像

i = 0
i += 1 # i = i + 1
%w
允许您创建如下数组

%w(search.js profile.js error.js)
这只是一个很好的简写

['search.js', 'profile.js', 'error.js']

%w
是字符串数组的缩写,在您的例子中,
['search.js']
Rails.application.config.assets.precompile是一个数组,您只需通过+=%w?@12添加到该数组,这是正确的。
['search.js', 'profile.js', 'error.js']