🐘

【Ruby】配列とハッシュの slice メソッドについて

2024/03/27に公開

概要

Ruby の slice メソッドは配列でもハッシュでも使うことができる。
それぞれの挙動について簡単にまとめていく。

先にまとめ

戻り値
配列 ["A", "B", "C"].slice(1) “B”
["A", "B", "C"].slice(1, 2) ["B", "C"]
["A", "B", "C"].slice(1..2) ["B", "C"]
ハッシュ {a: "A", b: "B", c: "C"}.slice(:a, :b) {:a=>"A", :b=>"B"}

環境

> ruby -v
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [aarch64-linux]

配列

引数1つの場合

引数に渡した index の値を返す。
渡した index が存在しなければ nil を返す。

> ["A", "B", "C"].slice(1)
=> "B"

> ["A", "B", "C"].slice(3)
=> nil

引数2つの場合

第一引数から数えて、第二引数分の値を配列で返す。
存在しない場合は配列に含めない。

> ["A", "B", "C"].slice(1, 2)
=> ["B", "C"]

> ["A", "B", "C"].slice(1, 3)
=> ["B", "C"]

> ["A", "B", "C"].slice(3, 1)
=> []

引数が範囲の場合

指定した範囲分の要素を配列返す。
指定した範囲が存在しない場合は配列に含めない

> ["A", "B", "C"].slice(1..2)
=> ["B", "C"]

> ["A", "B", "C"].slice(1..3)
=> ["B", "C"]

> ["A", "B", "C"].slice(3..3)
=> []

https://docs.ruby-lang.org/ja/latest/method/Array/i/slice.html

ハッシュ

引数に渡したキーの、キーと値をハッシュから取り出す。

> {a: "A", b: "B", c: "C"}.slice(:a)
=> {:a=>"A"}

> {a: "A", b: "B", c: "C"}.slice(:a, :b)
=> {:a=>"A", :b=>"B"}

> {a: "A", b: "B", c: "C"}.slice(:a, :d)
=> {:a=>"A"}

> {a: "A", b: "B", c: "C"}.slice(:d)
=> {}

https://docs.ruby-lang.org/ja/latest/method/Hash/i/slice.html

Discussion