array*string在Ruby中意味着什么?

Aar*_*ken 14 ruby ruby-on-rails

我正在浏览一些Rails源代码并遇到过

# File vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb, line 129
129:     def target!
130:       @target * ''
131:     end
Run Code Online (Sandbox Code Playgroud)

*''做什么?那是乘空字符串......?你为什么要这样做呢.

Pet*_*ter 14

这是一种奇怪的语法.这些是等价的:

>> [1, 2, 3] * 'joiner'
=> "1joiner2joiner3"

>> [1, 2, 3].join 'joiner'
=> "1joiner2joiner3"
Run Code Online (Sandbox Code Playgroud)

所以在这种情况下,它将所有条目连接@target成一个字符串,条目之间没有任何内容.

注意:如果您执行类似[1, 2, 3] * 3(使用int而不是a str)的操作,则会获得三个连续的数组副本.


klo*_*ner 6

它做同样的事情:

["foo","bar","baz"].join
Run Code Online (Sandbox Code Playgroud)

http://ruby-doc.org/core/classes/Array.html#M002210

根据ZED的建议,如果你想让人混淆并使你的代码更容易出错,你就会使用它.

  • 我可能会用不同的方式说出来.它与[] .join的结果相同,但使用join()方法更为明显且更常用.我已经看到了一些建议,我们不使用'*'运算符和数组,因为很少有人使用它,这是令人困惑的.将[1,2]*','与[1,2]*2的输出进行比较,以获得一个与我们的大脑不相称的原因的示例. (2认同)