回答:
%w(foo bar)
のショートカットです["foo", "bar"]
。つまり、コンマの代わりにスペースで区切られ、引用符で囲まれていない文字列の配列を記述する表記法です。あなたはzenspiderのquickrefでリテラルを書く方法のリストを見つけることができます。
%w(ab\ c def) # => ["ab c", "def"]
私%w()
は「単語の配列」と考えています-要素はスペースで区切られ、文字列の配列を返します。
他に%リテラルがあります:
%r()
正規表現を記述するもう1つの方法です。%q()
単一引用符で囲まれた文字列を書くもう1つの方法です(複数行にすることもでき、便利です)。%Q()
二重引用符で囲まれた文字列を与える%x()
シェルコマンドです%i()
シンボルの配列を与える(Ruby> = 2.0.0)%s()
foo
記号に変わります(:foo
)他には知りませんが、そこに潜んでいる人がいるかもしれません...
%i()
では、シンボルの配列の生成にも使用できます。
%()
(または%[]
or %{}
)もあり%Q()
ます。例%("sender name" <sender@example.com>) # => "\"sender name\" <sender@example.com>"
古い投稿ですが、質問が増え続け、答えがいつもはっきりとは分かりません。そこで、私の考えは次のとおりです。
%w
および%W
一般的な区切られた入力タイプの例です、配列に関連する。含む他の種類があり%q
、%Q
、%r
、%x
とは%i
。
大文字と小文字のバージョンの違いは、単一引用符と二重引用符の機能にアクセスできることです。一重引用符と(小文字)%w
を使用すると、コード補間はありません(#{someCode}
)、機能するエスケープ文字の範囲が限定されます(\\
、\n
)。二重引用符と(大文字)で%W
、我々はない、これらの機能へのアクセス権を持っています。
使用される区切り文字は、左括弧だけでなく、任意の文字にすることができます。上記の例を試して、効果があることを確認してください。
完全な例%w
と完全なリスト、エスケープ文字と区切り文字を使った完全な記事については、「Ruby-%wと%Wの比較-秘密が明らかになった!」をご覧ください。
代わりに%w()
私たちが使用する必要があります%w[]
Rubyスタイルガイドによると:
単語の配列(スペースや特殊文字を含まない空でない文字列)が必要な場合は、リテラル配列構文より%wを優先してください。このルールは、2つ以上の要素を持つ配列にのみ適用します。
# bad
STATES = ['draft', 'open', 'closed']
# good
STATES = %w[draft open closed]
さまざまな種類のパーセントリテラルに最も適した中括弧を使用します。
[]
配列リテラル(%w, %i, %W, %I
)は、標準の配列リテラルと揃えられるため。
# bad
%w(one two three)
%i(one two three)
# good
%w[one two three]
%i[one two three]
詳しくはこちらをご覧ください。
http://ruby-doc.org/core/doc/syntax/literals_rdoc.html#label-Percent+Stringsにあるパーセント文字列のドキュメントからの抜粋:
文字列を作成する%(...)の他に、%は他のタイプのオブジェクトを作成する場合があります。文字列と同様に、大文字は補間とエスケープ文字を許可し、小文字は無効にします。
これらはルビーのパーセント文字列のタイプです:
...
%w:文字列の配列
ユーザーのフルネームのCSVスプレッドシートから一連の列を受け取り、スペースを含めてフォーマットを維持する必要がありました。rubyを使用しているときに私が見つけた最も簡単な方法は、次のとおりです。
names = %( Porter Smith
Jimmy Jones
Ronald Jackson).split('\n')
これ%()
により、のような文字列が作成さ"Porter Smith\nJimmyJones\nRonald Jackson"
れ、配列を取得するsplit
には、"\n"
["Porter Smith", "Jimmy Jones", "Ronald Jackson"]
したがって、OPの元の質問にも答えるには、最終的な配列出力にを存在させたい%(cgi\ spaeinfilename.rb;complex.rb;date.rb).split(';')
場合があるのであれば、彼らが書いた可能性があります。space
space