🐘
【Ruby】配列とハッシュの slice メソッドについて
概要
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)
=> []
ハッシュ
引数に渡したキーの、キーと値をハッシュから取り出す。
> {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)
=> {}
Discussion