箱のプログラミング日記。

えんじにあ奮闘記

パーセント記法についてまとめる【Ruby】

f:id:y_hakoiri:20191102121618j:plain

Railsチュートリアルをやっていたところ、

こんなソースに遭遇しました。

 

>> a = %w[foo bar baz quux]         # %wを使って文字列の配列に変換

 

ん??この%wって何だ。。

 

 

調べたところ、パーセント記法だった。

ドットインストールで学習済みにも関わらず、ピンとこなかった自分。

やっぱり、動画を見るだけで受け身の学習はなかなか定着しづらいですね。

 

ということで、改めてまとめてみた

 

文字列の場合

 

%Q()

ダブルクォーテーションで囲まれた文字列を表現する。

 

以下3つのソースは同義。

puts "hello"

puts %Q(hello)

puts %(hello)          #Qは省略可

 

%q()

シングルクォーテーションで囲まれた文字列を表現する。

通常の記法同様、式展開の中では使えないので注意。

 

以下2つのソースは同義。

puts 'hello'

puts %q(hello)

 

なぜパーセント記法が必要なのか

文字列の中でクォーテーションなどの区切り文字を使いたいとき

普通の記法で書いた場合は、その中でエスケープしないといけない

 

エスケープすると見た目が悪くなるので、そういうときはもはや

クォーテーションで囲まずに、パーセント記法を使って

見やすく書いた方が良い。

 

以下のソースはそれぞれ同義だけど、

クォーテーションの中でエスケープさせるよりも、

パーセント記法を使用した下段二つの方が、視覚的に分かりやすい

 

以下二つは同義

puts "he \"loo"     #クォーテーション内でエスケープ

puts %Q(he"llo)   #パーセント記法で見やすく表現

 

以下二つは同義

puts 'he \"loo'     #クォーテーション内でエスケープ

puts %q(he"llo)   #パーセント記法で見やすく表現

 

 

 

 

配列の場合

空白を区切りとしてそれぞれを文字列とした配列を作成する

 

以下二つは同義

puts ["red", "blue"]

puts %W(red blue)

 

以下二つは同義

puts ['red', 'blue']

puts %w(red blue)

 

 

まとめ

エスケープは書くのも見るのも嫌だから、

こういう可読性を意識したソースを当たり前のように書けるようになりたい。

 

と言っても今まで自分でアプリを作ったりしていて、

エスケープが必要な場面に遭遇したことはないのだけれど。。

 

参考

ドットインストール>Ruby入門>%記法を使ってみよう

https://dotinstall.com/lessons/basic_ruby_v3/37111

 

 

文字列と配列以外にも、シンボル等の表現ができるようです

qiita.com