😺
Rubyで使われる%w記法(配列がいっぱいある時にめっちゃ便利!)。知っていたら実務で最強!
この記事の背景
現場RSpecでテストを実装している時に、テストデータが以下のようになっていました。
(以下のサンプルは例で実際の現場のものではないです)
:abc=>["1900", "株式会社nori", "inu town【1900】", "ロンドン", "福岡2-9-11", "カフェ", "30", "中村", "2", "山口", "03-4578-5598", "20221124", "1689", "5"],
このような配列がある時に、RuboCop(コード解析ツール)を使用した時に、配列が多すぎる!
と怒られてしまいました。実際人間の目から見ても見づらいです。
現場では自分がいなくなった後の人がコードを読みやすくしなければいけないので
修正する必要が出てきました。
その時に%w
の書き方を学びました。
%w記法とは
配列を作成したいときに「[ ]」(ブラケット)や「” “」(ダブルクォーテーション)を省略して記述するためのRubyの書き方です。コードの可読性(読みやすくなる)がよくなり、コーディングもやりやすくなります。
以下は資料を引用します。
puts ["侍", "ブログ", "Ruby", "\"%w記法\""]
puts %w(侍 ブログ Ruby "%w記法")
侍
ブログ
Ruby
"%w記法"
このように書けます。
もっと簡単な例で見ていく
rails コンソールを使ってもう少し見ていこうと思います。
animal = ["dog","cat","monkey","bird","lion","elephant"]
=> ["dog", "cat", "monkey", "bird", "lion", "elephant"]
irb(main):002:0> animal
=> ["dog", "cat", "monkey", "bird", "lion", "elephant"]
まだ文字列が少ないのですが、もっと多くなって来ると見づらいです。
それで以下のようにします。
irb(main):001:0> animal =%w(dog, cat, monkey, bird, lion, elephant)
=> ["dog,", "cat,", "monkey,", "bird,", "lion,", "elephant"]
上のようにした方が見やすいですよね!実行結果も同じです。
irb(main):002:0> animal
=> ["dog,", "cat,", "monkey,", "bird,", "lion,", "elephant"]
%w記法を使う時の注意点
数字を使う時は注意してください。%wを使わない場合は以下のようになります。
p = ["dog,", "cat,", "monkey,", "bird,", "lion,", "elephant",
1000]
=> ["dog,", "cat,", "monkey,", "bird,", "lion,", "elephant", 1000]
%wを使う場合は
irb(main):001:0> p= %w(dog, cat, monkey, bird, lion, elephant,1000)
=> ["dog,", "cat,", "monkey,", "bird,", "lion,", "elephant,1000"]
irb(main):002:0> p= %w(dog, cat, monkey, bird, lion, elephant,1000,0.123)
=> ["dog,", "cat,", "monkey,", "bird,", "lion,", "elephant,1000,0.123"]
のようになります。数字も文字列になってしまいます。
%w以外
他にも書き方はあります。
記法 |
---|
%W(式展開あり) |
%と%Q(「”」のエスケープを省略して文字列を作成) |
%r記法(正規表現) |
%iと%I記法(シンボル配列) |
詳しくは下の資料を見てください。
注意
この記事は2023年10月1日に投稿した記事です。
資料
Discussion