Help us understand the problem. What is going on with this article?

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

はじめに

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)

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away