0

我怎样才能让这个表达式返回一个单词数组?

%w(%q(words in a row))

我以为 %q 会给我一个字符串,然后 %w 会给我一个单词数组。Bt 相反,我得到

["%q(words", "in", "a", "row")"]

这是一些较大代码的一部分,因此仅使用 %w 本身无济于事。
我希望能够首先插入 %q 表达式。

4

3 回答 3

3

也许我误解了这个问题。但是如果你想插入字符串然后转换成一个单词数组,我相信这样%W做,注意大写(见这里)。

%W(words in a row)
#=> ["words", "in", "a", "row"]
于 2012-10-02T13:23:34.023 回答
3

小写%w并且%q不会在内部插入变量。您将需要使用大写的%Wand %Q,并且还需要将变量包装为 with#{}以进行插值。

您的工作代码版本:

%W{#{%q{words in a row}}}

但是正如贾斯汀所说,我不明白这一点。您可以直接将不带引号的原始字符串放入%w{}.

于 2012-10-02T14:19:47.103 回答
0

我怀疑做这种事情的用处,而且你的代码肯定有异味,但这里有一种方法:

eval("%w(#{%q(words in a row)})")
# => ["words", "in", "a", "row"]
于 2012-10-02T13:30:48.770 回答