みなさまお久しぶりです!
プレイライフの熊﨑です。
最近整体に行ったら、「君の身体は50代の人なみに凝っている」と言われましたw(私はまだ20代です。)
本日は、業務で使用したsliceメソッドについてまとめようと思います。
Hash#sliceメソッドとは
rubyのメソッドで、Hashクラスに用意されているメソッド
Ruby 2.5.0から標準メソッドになった。
どのようなメソッドか?
引数に指定されたキーと、それに対応する値をハッシュで返すメソッド。
sample.rb
hash = { id: 1, name: "佐藤太郎", address: "東京都中央区〇〇...", sex: "男性" }
hash.slice(:name) # => {:name=>"佐藤太郎"}
使用するメリット
- 単純に記述量を減らせる。
- sliceによって、取り出した属性を明示的に示せるため、可読性があがる。
例 ユーザーのデータから名前と性別を使用して、別のモデルに活用したい場合
sample.rb
user = { id: 1, name: "佐藤太郎", address: "東京都中央区〇〇...", sex: "男性" }
# 下の書き方でも間違ってはいないが、どの属性がuserから取り出したものなのか分かりづらい。今は属性の数も少ないのでそこまでわかりづらさを感じないかもしれないが、属性の数が増えていくにつれて、もっとわかりづらくなる。
# また、単純に記述量が多くなる。
params = {
name: user.name,
sex: user.sex,
age: age
}
# hashメソッドを使用することで、:nameと:sexはuserから取り出したものであり、:ageはmergeするものだと明示的に示せる。
params = user.slice(:name, :sex).merge(age: age)
Otheruser.new(params)
まとめ
- sliceメソッドを使用することで、シンプルかつわかりやすいコードをかける。
reference
https://docs.ruby-lang.org/ja/latest/method/Hash/i/slice.html