Just do IT

思うは招く

[Ruby] %記法で配列をカンタンに作る方法まとめ

共通事項

  • 囲む文字(区切り文字)は!~!,(~),[~],%~%, &~&などいろんな記号が使える
  • %の次に来る文字は小文字、大文字がある
    • 大文字は式展開や改行文字などを含められる
  • wは文字列、iはシンボルの配列を作る

%w, %W 文字列の配列を作る

%w(hoge foo bar baz)
=> ["hoge", "foo", "bar", "baz"]

文字列にスペースを含めたい場合はバックスラッシュでエスケープする。

%w(big\ muscle big\ legs big\ nose)
=> ["big muscle", "big legs", "big nose"]

式展開や改行文字などを含める場合は%Wと大文字のWを使う。

muscle = '筋肉'
ga = 'が'
want = '欲しくて欲しくてたまらない'
%W(#{muscle} #{ga} #{want})
=> ["筋肉", "が", "欲しくて欲しくてたまらない"]

小文字のwだと式展開はされない。

%w(#{muscle} #{ga} #{want})
=> ["\#{muscle}", "\#{ga}", "\#{want}"]

%i, %I シンボルの配列を作る

%i(hoge foo bar baz)
=> [:hoge, :foo, :bar, :baz]

大文字のIを使うと式展開が使える。

muscle = '筋肉'
ga = 'が'
want = '欲しくて欲しくてたまらない'
%I(#{muscle} #{ga} #{want})
=> [:筋肉, :が, :欲しくて欲しくてたまらない]

文字列を作る場合

ちなみに、配列ではなく普通の文字列を%記法で作る場合。 配列を作るのと同様、区切り文字には任意の記号が使える。

%q シングルクォートで囲む

puts %q(筋肉が欲しくて欲しくてたまらない)
=> 筋肉が欲しくて欲しくてたまらない

'"エスケープなしで記述できる。

%Q ダブルクォートで囲む(式展開が使える)

str = %q(筋肉が欲しくて欲しくてたまらない)
puts %Q(#{str})
=> 筋肉が欲しくて欲しくてたまらない

%!~!も同じ意味になる。

puts %!#{str}!
=> 筋肉が欲しくて欲しくてたまらない