ミニガミッツのマンチカン

PREV | PAGE-SELECT | NEXT


≫ EDIT

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。



RSSの購読をぜひ →

rss.png

| スポンサー広告 | --:-- | comments(-) | trackbacks(-) | TOP↑

≫ EDIT

Rubyのバージョンごとに違うメソッドを使う方法

alei_star 鉄星
どうも鉄星です。

Rubyってバージョンが上がる度に結構ドラスティックに変わりますよね.
今まで使えていたメソッドが使えなくなったり・・・

厄介なのはMacにデフォルトでインストールされているRubyが1.8.6で
ちょっと古いってことなんよね.

ということで,なるべくバージョンをまたいでも統一したソースを使える
ように記述する方法を紹介します.


それにはsendメソッドを用います.

プログラム中でRubyのバージョンはRUBY_VERSIONで取得できます.


例として,配列中のランダムな要素を抽出するメソッドを見ます.
Ver1.8まではそれは"choice"メソッドでしたが,
Ver1.9以降でそれは"sample"メソッドと名称が変わりました.

通常それらを使用する場合は
array = ["aaa", "bbb", "ccc"]
random_item = array.choice # Ver1.8以前
random_item = array.sample # Ver1.9以降
puts random_item

などとして使用します.


これらを統一的に記述することを考えます.

バージョン関係なくランダムに要素を抽出するメソッドの名称を"random_select"とするとして
if RUBY_VERSION.to_f > 1.8
random_select = "sample"
else
random_select = "choice"
end

と記述しておきます.

そして,メソッドを使用する際は
array = ["aaa", "bbb", "ccc"]
random_item = array.send(random_select) # 共通
puts random_item

として使用するのです.
この書き方なら実際にメソッドを使用する部分で場合分けをしなくて済むので,美しく書けますね.

以上です。

関連記事



RSSの購読をぜひ →

rss.png

| Ruby | 12:12 | comments:0 | trackbacks:0 | TOP↑

COMMENT















非公開コメント

TRACKBACK URL

http://miniman2011.blog55.fc2.com/tb.php/379-fa6e589b

TRACKBACK

PREV | PAGE-SELECT | NEXT

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。