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
文字列と配列以外にも、シンボル等の表現ができるようです