ruby - %w(%q(连续的单词))返回错误的元素

时间:2012-10-02 13:14:55

标签: ruby arrays

如何让这个表达式返回一个单词数组?

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

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

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

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

3 个答案:

答案 0 :(得分:3)

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

%W(words in a row)
#=> ["words", "in", "a", "row"]

答案 1 :(得分:3)

小写%w%q不会在内部插入变量。您需要使用大写%W%Q,还需要使用#{}包装变量进行插值。

您的工作代码版本:

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

然而正如贾斯汀所说,我不明白这一点。您可以直接在%w{}中放置没有引号的原始字符串。

答案 2 :(得分:0)

我怀疑做这种事情是否有用,你的代码肯定有一股气味,但这是一种方式:

eval("%w(#{%q(words in a row)})")
# => ["words", "in", "a", "row"]
相关问题