%w[ ] Non-interpolated Array of words, separated by whitespace
%W[ ] Interpolated Array of words, separated by whitespace
Run Code Online (Sandbox Code Playgroud)
用法:
p %w{one one two three 0 1 1 2 3} # = > ["one", "one", "two", "three", "0", "1", "1", "2", "3"]
p %W{one one two three 0 1 1 2 3} # = > ["one", "one", "two", "three", "0", "1", "1", "2", "3"]
p %w{C:\ C:\Windows} # => ["C: C:\\Windows"]
p %W{C:\ C:\Windows} # => ["C: C:Windows"]
Run Code Online (Sandbox Code Playgroud)
我的问题是......有什么区别?
acc*_*rad 70
%W将字符串视为双引号,而%w将它们视为单引号(因此不会插入表达式或多个转义序列).使用ruby表达式再次尝试你的数组,你会看到一个区别.
例:
myvar = 'one'
p %w{#{myvar} two three 1 2 3} # => ["\#{myvar}", "two", "three", "1", "2", "3"]
p %W{#{myvar} two three 1 2 3} # => ["one", "two", "three", "1", "2", "3"]
Run Code Online (Sandbox Code Playgroud)
让我们跳过数组混淆并讨论插值与无:
irb(main):001:0> [ 'foo\nbar', "foo\nbar" ]
=> ["foo\\nbar", "foo\nbar"]
irb(main):002:0> [ 'foo\wbar', "foo\wbar" ]
=> ["foo\\wbar", "foowbar"]
Run Code Online (Sandbox Code Playgroud)
行为上的差异与单引号与双引号字符串的行为方式一致.
| 归档时间: |
|
| 查看次数: |
14306 次 |
| 最近记录: |