無差別に技術をついばむ鳥

情報処理技術全般を気まぐれにつつくゆるいブログです

RubyをつつくX−演算子式。あれからこれまでお願い。

Rubyには数多くの演算子があって、それらは演算子式と呼ばれているピヨ♪何故演算子ではなくて、演算子式なのかというと、その方が便利だからなんだピヨ♪それで、具体的に何が便利なのかというと、ラムダ式の様な事が普通に出来る事なんだ。LISPのS式はよく無敵だといわれるんだけど、そのパワーを十二分に取り入れているって事だね。初心者の人には意味がわからないと思うけど、後々その強力さが分かって来るから安心して連載を読んでね。
今回は演算子式の中の範囲式をつつくピヨ♪この式は大変便利なんだ。どのように便利なのかは次のコードを見たら分かると思う。


num = 2
case num * 5
  when 1 .. 10  #超便利!
    puts 'true'
  else
    puts 'false'
end


これはよくある多分岐処理なんだ。この例のように一々全部の数値を書か無くてもいいのは便利だよね?1から10までならばまだしも、これが1万とかだったらどうする?疲れるよね。えっ?そんなことなら比較演算子を使うって?ごもっとも。それならば、次のコードを見てよ。


for i in 1 .. 10
  puts i
end


どう?便利でしょう。えっ!まだ便利だとは思わない?うーん。どうしよう。ならばとっておきの事を教えるピヨ。実はこの式はRangeオブジェクトを生成するんだ。オブジェクトが生成される事は可能性は無限大だと言うことだピヨ♪みんなも、この範囲式を積極的に使ってみよう。そうすれば、凄い事思いつくピヨかもよ。じゃあ、まったねー。
別窓 | Ruby | コメント:2 | トラックバック:0 | ∧top | under∨
<<中の人の徒然草92 | 無差別に技術をついばむ鳥 | 中の人の徒然草91>>

この記事のコメント

ruby の case の便利なところは === にあると思いますので、case をもって範囲が便利ってのは少し違うんじゃないかな?と思います。
範囲式が便利なのには違いありませんけど。
2008-09-25 Thu 01:39 | URL | THREE-ONE #Y4ecaAXY[ 内容変更]
THREE-ONEさんコメント有難う。
caseで範囲式を使うのはありがちな例だと思って書いただけなので、特に深い意味はありません。
だけどもし厳密に言うのであれば、whenで一々範囲式を使用するのはパフォーマンス上良くないと思います。メソッド内でこれをすると、メソッドが呼ばれるたびにRangeオブジェクトが生成されてしまうでしょう。※後でコンパイラ調べてみます
ですから、毎回範囲式を使用するのではなく、Rangeオブジェクトを予め生成しておいて、そのオブジェクトをwhenで使用するのが正しい使い方だと思います。
その辺については深くつつくシリーズで書く予定です。あくまでもつつくシリーズは初心者用のシリーズなのです。
2008-09-25 Thu 13:55 | URL | インドリ #-[ 内容変更]
∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

この記事のトラックバック

∧top | under∨
| 無差別に技術をついばむ鳥 |