0

この式で単語の配列を返すにはどうすればよいですか?

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

%q は文字列を与え、%w は単語の配列を与えると思っていました。Bt代わりに私は得る

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

これはより大きなコードの一部であるため、%w を単独で使用するだけでは役に立ちません。
最初に %q 式を補間できるようにしたい。

4

3 に答える 3

3

小文字%wで、%q内部の変数を補間しません。大文字%Wとを使用する必要があります。また、補間%Qするために変数をラップする必要があります。#{}

動作するコードのバージョン:

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

しかし、ジャスティンが言ったように、私はこれのポイントを理解していません。に引用符なしで生の文字列を直接入れることができます%w{}

于 2012-10-02T14:19:47.103 に答える
3

多分私は問題を誤解しています。しかし、文字列を補間してから単語配列に変換したい場合は%W、大文字と小文字に注意してこれを行うと思います (こちらを参照)。

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

私はそのようなことをすることの有用性を疑っており、あなたのコードには間違いなく臭いがありますが、ここに方法があります:

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