如何
让这个表达式返回一个单词数组?
%w(%q(words in a row))
我以为 %q 会给我一个字符串,然后 %w 会给我一个单词数组。Bt 相反,我得到
["%q(words", "in", "a", "row")"]
这是一些较大代码的一部分,因此仅单独使用 %w 将无济于事。
我希望能够首先插入 %q 表达式。
小写%w
和 %q
不会在内部插入变量。您将需要使用大写%W
和%Q
,并且还需要用#{}
包装变量以进行插值。
您的工作代码版本:
%W{#{%q{words in a row}}}
然而,正如贾斯汀所说,我不明白这有什么意义。您可以直接将不带引号的原始字符串放入%w{}
。
也许我误解了这个问题。但是如果你想插值字符串,然后转换为单词数组,我相信%W
会这样做,注意大写(见这里)。
%W(words in a row)
#=> ["words", "in", "a", "row"]
我怀疑做这样的事情是否有用,而且你的代码中肯定有气味,但这里有一种方法:
eval("%w(#{%q(words in a row)})")
# => ["words", "in", "a", "row"]