1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

digメソッドとは

Posted at

digメソッドとは

digメソッドとは、配列とハッシュから安全に値を取り出すことができるメソッド。

安全にとはどういうことか、それはdigメソッドを使用して値を取得する場合、エラーは発生せずnilを返してくれる。
これが配列とハッシュから安全に値を取り出すことができる理由。

# digメソッドを用いて値を取得する場合

# 存在しないmusic、rockを取得しようとする
users.dig(1, :profile, :hobbys, :music, :rock)
=> nil

配列の場合

以下のような配列があると仮定し、digメソッドを用いてそれぞれの値を取り出してみる。

digメソッドの引数に取得したい値のindexを指定していくことで値を取り出すことができる。

fruits = [[ "apple",[ "banana", "grape" ]]]

# appleを取得する
fruits.dig(0, 0)
=> "apple"

# bananaを取得する
fruits.dig(0, 1, 0)
=> "banana"

# grapeを取得する
fruits.dig(0, 1, 1)
=> "grape"

ハッシュの場合

以下のようなハッシュがあると仮定し、digメソッドを用いてそれぞれの値を取り出してみる。digメソッドの引数に取得したい値のキーを指定していくことで値を取り出すことができる。

users =
{
  name: {
    first_name: '太郎',
    last_name: '田中'
  },
  age: 25
}

# ageを取得
users.dig(:age)
=> 25

# first_nameを取得
users.dig(:name, :first_name)
=> "太郎"

# last_nameを取得
users.dig(:name, :last_name)
=> "田中"

配列とハッシュの入れ子構造の場合

以下のような配列とハッシュの入れ子構造があると仮定し、digメソッドを用いてそれぞれの値を取り出してみる。配列とハッシュの場合同様、それぞれindexもしくはキーを指定することで取得することができる。

users =
[
  "佐藤",
  profile: {
    age: 30,
    hobbys: {
      sports: "サッカー",
      manga: "ワンピース"
    }
  }
]

# nameを取得
users.dig(0)
=> "佐藤"

# ageを取得
users.dig(1, :profile, :age)
=> 30

# sportsを取得
users.dig(1, :profile, :hobbys, :sports)
=> "サッカー"

# mangaを取得
users.dig(1, :profile, :hobbys, :manga)
=> "ワンピース"

参考記事

【Rails】配列・ハッシュから安全に値を取り出すことができるdigメソッドについて

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?