Ruby/Rubyの基礎知識

Ruby2.1の変更点と新機能の紹介(3ページ目)

2013年12月にリリースされたRuby2.1は2.0と何が変わったのか、どんな機能があるのかを紹介します

橋本 拓也

執筆者:橋本 拓也

Rubyガイド

Module#refine + using

2.0までは実験的機能(experimental)であり使用すると警告が出ていましたが、2.1でめでたく標準機能入りした機能です。Module#refineは引数にクラスとブロックを取り、ブロック内でそのクラスの機能を拡張してやります。

こうしてrefineブロックで定義した機能は、usingを呼び出したレシーバのスコープにおいてのみ有効化されます。

「地の文」、つまりmain部分で呼び出したときはこうなります。

ここまではシンプルですが、モジュール定義内でusingして、そのモジュールを別のクラスにinclude...などと考えだすとなかなか複雑になってきます。

あまり気軽に使える機能ではないと思いますが、使いドコロとしては例えば「Stringクラスの既存メソッドを書き換える必要があるけど、グローバルに変更してしまうと影響範囲が大きくて怖い...」というケースなどの、範囲を限定した標準ライブラリに対するモンキーパッチなどでしょうか。

参考: Rubyist Magazine - Refinementsとは何だったのか

余談

倉持: 被告人のPCで何をしていたか

M氏: VisualStudioを使ったC#のプログラムが書かれていたと思います。

倉持: C#と分かったのはなぜか。

M氏: C#特有のキーワードが片山さんが書いているプログラムにあった。

倉持: 具体的には

M氏: "using"と"namespace"

【PC遠隔操作事件】C#でのプログラム作成能力を巡って(第6回公判メモ)(江川 紹子) - 個人 - Yahoo!ニュース

以上

Ruby2.1の機能紹介は以上です。

今回紹介したような新機能/新構文に加えて、VMの性能もアップしているそうなので既に2.0を使っている人はバージョンアップの動機付けになるかもしれません。

【編集部おすすめの購入サイト】
楽天市場で Ruby 関連の書籍を見るAmazon で Ruby 関連の書籍を見る
  • 前のページへ
  • 1
  • 2
  • 3
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます