[#47200] 今 def 文を実行すると、メソッドが定義されるクラス、にアクセスする方法 — "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp>
きしもとです
5 messages
2010/07/01
[#47211] [ANN] Ruby-1.9.1-p429 Windows用パッケージ リリース — arton <artonx@...>
artonです。
1 message
2010/07/05
[#47213] ruby-debug-ide-0.4.9.gemファイルのローカルインストール — eiichi_maekawa@...
8 messages
2010/07/06
[#47214] Re: ruby-debug-ide-0.4.9.gemファイルのローカルインストール
— keiichi matsunaga <ma2@...>
2010/07/06
On 7/6/2010 1:36 PM, eiichi_maekawa@mhi.co.jp wrote:
[#47215] Re: ruby-debug-ide-0.4.9.gemファイルのローカルインストール
— eiichi_maekawa@...
2010/07/06
松永さん
[#47221] Re: ruby-debug-ide-0.4.9.gemファイルのローカルインストール — Shozo Arai <shozoa@...>
荒井です。
6 messages
2010/07/08
[#47222] Re: ruby-debug-ide-0.4.9.gemファイルのローカルインストール
— eiichi_maekawa@...
2010/07/09
荒井さん
[#47228] ANN++: Ruby-1.9.2-rc1 mswin32-100 のパッケージをリリース — arton <artonx@...>
artonです。
11 messages
2010/07/11
[#47245] Re: for文について
— kamuycikap <kamuycikap@...>
2010/07/21
こんばんは。
[#47246] Re: for文について
— Kiyotaka ATSUMI <kiyotaka@...>
2010/07/21
こんばんは.渥美です.
[#47229] [ANN] Ruby 1.9.2 RC2 is out — "Yuki Sonoda (Yugui)" <yugui@...>
-----BEGIN PGP SIGNED MESSAGE-----
5 messages
2010/07/11
[#47263] Structに型宣言/型変換を組み込みたい — "MISHIMA, Hiroyuki" <missy@...>
長崎大の三嶋と申します。
5 messages
2010/07/29
[ruby-list:47276] Re: case when 整数と実数の比較 (ruby 1.9)
From:
小田 利通 <oda@...>
Date:
2010-07-31 00:58:58 UTC
List:
ruby-list #47276
小田利通です。るびきちさん、ささださん、ありがとうございます。
From: SASADA Koichi <ko1@atdot.net>
Subject: Re: [ruby-list:47272] case when 整数と実数の比較 (ruby 1.9)
Date: Fri, 30 Jul 2010 22:23:35 +0900
》(コンパイル時に when が簡単なリテラルだけなら hash をひくように効率化し
》ているんですが、
》 p({1 => true}[1.0]) #=> nil
ハッシュは eql? ですし、 case は === なので、むずかしいように思います。
その上、どちらも再定義可能な演算子ですから、実行時にどうなるんでしょうね。
この「効率化」は when がたくさん並んだときでなく、
when の後ろに , で区切ってたくさん並んだときに効率良く処理するものですよね。
case var
when 1,2,3,4,8,10,11,13;
こういうときに(eql? を使っても良くて)効率良く処理したければ、自分で
あらかじめハッシュを用意して置くべきかもしれません。
time ruby -e 'var=13; 200000.times {case var; when 1,2,3,4,7,11,13; true;end}'
# ruby 1.8 では遅いけど、現在の ruby 1.9.1 では早い
time ruby -e 'var=13; hsh={1=>true,2=>true,3=>true,4=>true,7=>true,11=>true,13=>true};200000.times {case;when hsh[var];true ;end}'
# これも同程度に早い
time ruby -e 'var=13; ary=[1,2,3,4,7,11,13]; 200000.times {case;when ary.index(var);true;end}'
# 配列は遅い 比較は == を使用
ary のように、キーが重要で、値はそれほど重要でないハッシュが、
もっとの簡単に書けると良いのですけどね。
From: rubikitch@ruby-lang.org
Subject: [ruby-list:47273] Re: case when 整数と実数の比較 (ruby 1.9)
Date: Fri, 30 Jul 2010 18:25:01 +0900
》ですが、そもそも浮動小数点数で直接比較するものではありません。
》丸め誤差の関係で思わぬ落とし穴にはまります。
そうですね。実際に私が書いているコードは
case var
when 1;
というのだったんですが、var は実質整数である、Float のオブジェクトと
分かっているので、
case var.to_i ## or var.round
when 1;
とするのが良いのですね。
ありがとうございます。
T.Oda