Edited at

Rubyで%記法(パーセント記法)を使う

More than 5 years have passed since last update.

Rubyの%記法まとめ。

以下の例では%の後に全て「()」記号を使っているが、他の記号でも代替可能。自分が好きなものを使って問題ない。


1. %、%Q

ダブルクオートで囲う場合と同等。

シングルクオートやダブルクオートのエスケープが不要になる。

後述の%q()と違い、変数・定数の展開もできる。

str = %(Programming language "Ruby")

puts str
# => Programming language "Ruby"

ruby = "Ruby"
str2 = %(Programming language "#{ruby}")
puts str2
# => Programming language "Ruby"


2. %q

シングルクオートで囲う場合と同等。

シングルクオートなので、変数や定数の展開はされない。

ruby = "Ruby"

str = %q(Programming language "#{ruby}")
puts str
# => Programming language "#{ruby}"


3. %w

配列を作る。配列の要素はスペース区切りで指定する。

式の展開はされない。

array = %w(one two three four)

p array
# => ["one", "two", "three", "four"]


4. %W

配列を作る。%w()と違い、式の展開がされる。

ruby = 'Ruby'

PYTHON = 'Python'

array = %W(#{ruby} #{PYTHON} PHP)
p array
# => ["Ruby", "Python", "PHP"]


5. %i

要素がシンボルの配列を作る。

array = %i(Ruby Python PHP)

p array
# => [:Ruby, :Python, :PHP]


6. %I

要素がシンボルの配列を作る。%i()と違い、式の展開がされる。

ruby = 'Ruby'

PYTHON = 'Python'

array = %I(#{ruby} #{PYTHON} PHP)
p array
# => [:Ruby, :Python, :PHP]


7. %x

コマンド出力を行う。バッククオートで囲った場合と同等。

res = %x(date) # dateコマンドの実行

puts res
# => Sat Aug 23 23:27:01 JST 2014


8. %s

シンボル。式の展開はされない。

sym = %s(Ruby)

p sym
# => :Ruby