[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}!
=> 筋肉が欲しくて欲しくてたまらない