假设我想用["one", "two", nil]
创建一个数组,是否可以使用简写%w[]
语法来实现?显然这不起作用:
array = %w[one two nil]
=> ["one", "two", "nil"]
array[2].nil?
=> false
Ruby 1.9.3
答案 0 :(得分:4)
没有。方便语法的全部目的是避免在字符串文字和分隔符逗号。
周围加上引号答案 1 :(得分:1)
您可以展开%w[]
数组并将nil
放在:
>> array = [ *%w[one two], nil, *%w[and some more words] ]
=> ["one", "two", nil, "and", "some", "more", "words"]
但这可能比单独引用字符串更嘈杂; OTOH,额外的噪音确实表明发生了奇怪的事情,所以鼓励读者仔细观察。
答案 2 :(得分:0)
只是间接的。您可以创建数组,然后使用Array#collect:
将字符串“nil”转换为实际的nilarray = %w[one two nil].collect { |v| v == 'nil' ? nil : v }