はじめに
Rubyで入力を簡略化出来る%記法についてまとめました。
文字列・シンボルの2つの配列式に絞って記載してあります。
この記法はキーを打つ回数を減らすのにはもってこいですね
参考にしたのは以下Ruby公式リファレンスです。
リテラル (Ruby 2.6.0)
この記事が役に立つ方
- 配列はつい
[“a”, “b”, “c”]
と書いてしまう - Rails初心者
この記事のメリット
- 配列を作るときの%記法が書けて、読めるようになる
環境
- macOS Catalina バージョン10.15.1
- シェル:zsh
- Ruby 2.6.3
まとめ
まず先に、表でまとめておきます。
記法 | 型 | 式展開 |
---|---|---|
%w(配列にしたい内容) |
文字列 | なし |
%W(配列にしたい内容) |
文字列 | あり |
%i(配列にしたい内容) |
シンボル | なし |
%I(配列にしたい内容) |
シンボル | あり |
小文字がシングルクオートで囲われる、
大文字がダブルクオートで囲われると理解すれば簡単ですね。
また、配列にしたい内容は空白区切りで書くため、タイピングがかなり楽です
StringとIntegerを配列にした場合の出力例
前提
式展開が有効になることを確認するために、以下のような変数を用意しておきます。
dog = "cat"
%w()
%w(dog cat bird)
=> ["dog", "cat", "bird"]
%w(#{dog} cat bird)
=> ["\#{dog}", "cat", "bird"]
%w(1 2 3+4)
=> ["1", "2", "3+4"]
%w(1 2 #{3+4})
=> ["1", "2", "\#{3+4}"]
式展開されませんが、\
で#
がエスケープされます。
%W()
%W(dog cat bird)
=> ["dog", "cat", "bird"]
%W(#{dog} cat bird)
=> ["cat", "cat", "bird"]
%W(1 2 3+4)
=> ["1", "2", "3+4"]
%W(1 2 #{3+4})
=> ["1", "2", "7"]
変数と計算式が展開されています。
個人的には一番使うパターンです。
%i()
%i(dog cat bird)
=> [:dog, :cat, :bird]
%i(#{dog} cat bird)
=> [:"\#{dog}", :cat, :bird]
%i(1 2 3+4)
=> [:"1", :"2", :"3+4"]
%i(1 2 #{3+4})
=> [:"1", :"2", :"\#{3+4}"]
%w()
同様で、出力は式展開されませんが、\
で#
がエスケープされます。
%I()
%I(dog cat bird)
=> [:dog, :cat, :bird]
%I(#{dog} cat bird)
=> [:cat, :cat, :bird]
%I(1 2 3+4)
=> [:"1", :"2", :"3+4"]
%I(1 2 #{3+4})
=> [:"1", :"2", :"7"]
%W()
同様、変数と計算式が展開されています。
おわりに
ちなみに、%i
のi
は何の略なんでしょうか?
シンボルの持つ意味からすると、Identification
?
ご存知の方がいらっしゃれば教えていただきたいです