この式で単語の配列を返すにはどうすればよいですか?
%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"]