Ruby技術者認定試験に合格しよう! ~ゴールド編②~

※この記事は読者によって投稿されたユーザー投稿のため、編集部の見解や意向と異なる場合があります。また、編集部はこの内容について正確性を保証できません。

CTC教育サービスはコラム「Ruby技術者認定試験に合格しよう! ~ゴールド編②~ 」を公開しました。
こんにちは、藺藤です。

今回のコラムでは、新しくリリースされた「Ruby 2.3」と、前回のコラムの続きで「Ruby技術者認定試験ゴールド試験のポイント」をご紹介します。

Ruby 2.3リリース!
昨年末にRubyの新しいバージョン「Ruby 2.3.0」がリリースされました。(*1) 早速、私も触ってみました。 様々な更新内容を含むリリースでしたが、その中でも特に以下のものが便利だと感じましたのでご紹介します。

Hash#dig, Array#dig
入れ子になったHashやArrayから、深い場所にある値を取り出すメソッドです。 次のように利用します。

{a: {b: {c: :d}}}[:a][:b][:c] #=> :d
{a: {b: {c: :d}}}.dig(:a, :b, :c) #=> :d
#[]を使った値の取り出しと#digの利用の違いは、#digの場合には途中に値が存在しない場合に例外を発生させず、代わりにnilを返すことです。

{a: {b: {c: :d}}}[:a][:unknown_key][:c] #=> NoMethodErrorが発生
{a: {b: {c: :d}}}.dig(:a, :unknown_key, :c) #=> nil
深い位置にある値を取り出したいが、途中の要素が値を持たない可能性があるとき、#digを利用すると便利です。 存在チェックの処理を省いて、すっきりとコーディングできるようになります。

上の例ではHashが入れ子になったものに対して#digを使ってみましたが、ArrayやHashのような"コンテナ"以外のインスタンス(例えばFixnumクラスのインスタンス)に対して#digを呼び出すとTypeErrorが発生します。 これによって、

•コンテナがnilを返した場合
•コンテナ以外のレシーバに対して#digを呼び出した場合
を区別できます。

この続きは以下をご覧ください
http://www.school.ctc-g.co.jp/columns/masuidrive/masuidrive25.html

この記事が役に立ったらシェア!
メルマガの登録はこちら Web担当者に役立つ情報をサクッとゲット!

人気記事トップ10(過去7日間)

今日の用語

インデックス
検索エンジンがWebページをデータベースに保存しているデータベース。データベース ...→用語集へ

インフォメーション

RSSフィード


Web担を応援して支えてくださっている企業さま [各サービス/製品の紹介はこちらから]