BT

Ruby 2.3.0の新機能のプレビュー

| 作者: Sergio De Simone フォローする 17 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2015年12月23日. 推定読書時間: 2 分 |

原文(投稿日:2015/11/18)へのリンク

Ruby 2.2.0のリリースからほぼ1年,Ruby 2.3.0の最初のプレビューが発表された。今回のRuby 2.3.0 Preview 1には,不変文字列リテラルやnull合体演算子などの新機能が導入されている。

  • 不変文字列リテラル: 次のような構文で文字列リテラルを”frozen”,つまり不変とマークすることが可能 - CONSTANT_STRING = 'constant string'.freeze これによって開発者の意図をより明確に示すことが可能になるとともに,Ruby開発者のMaciej Mensfeld氏の実施したベンチマーク結果が示すように,パフォーマンス上でも大きなメリットがある。文字列を既定値として不変にするためには,次のような”マジック”コメントを使用すればよい - # frozen_string_literal: true
  • セーフナビゲーション演算子: nilの取り扱いを容易にするもので,C#やSwiftなど,他の言語で利用できるものに近い。これにより,nilの明示的なチェックが不要になる。

    u = User.find(id)
    if u && u.profile && ...
    

    オブジェクトを対象に,&.というnull合体演算子を使用することもできる。

    u = User.find(id)
    u&.profile...
    

    Rubyの開発者であるMatzによると,この‘&.’という構文には,u && u.profileという表現を連想させて理解しやすいというメリットに加えて,Rubyではメソッド名のサフィックスに使われることの多い‘?’との混同を避ける意味もある。

    &.演算子と同じく,配列やハッシュに追記する#digメソッドも新たに追加された。深くネストしたデータに対して,安全な方法でアクセスできるようになる。

    myHash.dig(:key1, :key2, :key3)
    

    要求された位置に要素が存在しない場合,#dignilを返す。

  • “did_you_mean” gemの言語への統合: コード内のミススペルの指摘,可能な修正方法の提案といった支援を行う。

Ruby 2.3.0にはその他にも,多数の新機能が含まれている。そのひとつである深いハッシュ比較(deep hash comparsion)では,ハッシュが同じキーを持っているかだけでなく,同じ値であるかどうかも含めて,数値と同じように2つのハッシュを比較することができる。また,列挙可能なオブジェクトの新機能である#grep_vは,指定した正規表現にマッチしない要素をすべて返すものだ。新機能の完全なリストはリリースノートにある。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT