LoginSignup
5
4

More than 3 years have passed since last update.

【Ruby】配列を作るときに使う%記法まとめ

Posted at

はじめに

Rubyで入力を簡略化出来る%記法についてまとめました。
文字列・シンボルの2つの配列式に絞って記載してあります。

この記法はキーを打つ回数を減らすのにはもってこいですね:point_up:

参考にしたのは以下Ruby公式リファレンスです。
リテラル (Ruby 2.6.0)

この記事が役に立つ方

  • 配列はつい[“a”, “b”, “c”]と書いてしまう
  • Rails初心者

この記事のメリット

  • 配列を作るときの%記法が書けて、読めるようになる

環境

  • macOS Catalina バージョン10.15.1
  • シェル:zsh
  • Ruby 2.6.3

まとめ

まず先に、表でまとめておきます。

記法 式展開
%w(配列にしたい内容) 文字列 なし
%W(配列にしたい内容) 文字列 あり
%i(配列にしたい内容) シンボル なし
%I(配列にしたい内容) シンボル あり

小文字がシングルクオートで囲われる、
大文字がダブルクオートで囲われると理解すれば簡単ですね。

また、配列にしたい内容は空白区切りで書くため、タイピングがかなり楽です:clap:

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()同様、変数と計算式が展開されています。

おわりに

ちなみに、%iiは何の略なんでしょうか?
シンボルの持つ意味からすると、Identification

ご存知の方がいらっしゃれば教えていただきたいです:smile:

参考にさせて頂いたサイト(いつもありがとうございます)

リテラル (Ruby 2.6.0)

5
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4