[#139] ruby 0.97 available — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろ@トヨタケーラムです.
1 message
1996/02/13
[#145] Re: The black face. — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろ@トヨタケーラムです.
1 message
1996/02/14
[#182] Re: DOS port — Kazuhiko Iwama <iwama@...>
■ [ruby-list:178] Re: DOS port
1 message
1996/02/20
[#184] Re: DOS port — Kazuhiko Iwama <iwama@...>
■ [ruby-list:181] Re: DOS port
1 message
1996/02/20
[#185] Re: DOS port — Kazuhiko Iwama <iwama@...>
■ [ruby-list:183] Re: DOS port
1 message
1996/02/20
[#196] Re: DOS port — Kazuhiko Iwama <iwama@...>
■ [ruby-list:183] Re: DOS port
1 message
1996/02/26
[#198] Re: DOS port — Kazuhiko Iwama <iwama@...>
■ [ruby-list:197] Re: DOS port
1 message
1996/02/26
[#201] Re: ruby for JPower — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろ@トヨタケーラムです.
1 message
1996/02/26
[ruby-list:119] Re: i++
From:
matz@... (Yukihiro Matsumoto)
Date:
1996-02-02 07:06:34 UTC
List:
ruby-list #119
まつもと ゆきひろ@トヨタケーラムです.
In message "[ruby-list:118] i++"
on 96/02/02, P nakawtse <nakawtse@syrinx.dq.isl.ntt.jp> writes:
|中渡@NTTです.
| #++がなかったとは...
| #もっと演算子を.
実は++演算子はオブジェクト指向と馴染まないんですよ.というのも
rubyの場合,演算子もメソッドコールになっているんです(シンタッ
クスシュガーをかぶせているですけど).i++などの場合,レシーバ
が「変数」でないとうまくいかないんですね.
i=10
i++
で10に「1増えろ」というメッセージを送っても意味無いんですよ
ね.変数はrubyの場合オブジェクトじゃないですし.まあ,i++は
i+=1のシンタックスシュガーである,としても良いんですけど,多
分ちっとも速くないですよね.i+=1と1文字しか違わないし,高速
でもないので今のところ採用していないんですよね.
| イテレータの方も毎回定義を参照してるのではないの?
あ,これはCで定義しているイテレータの場合です.rubyで定義し
たイテレータはどうなるのかなあ.
time ruby -le 'def until(cond); return if cond; yield;retry end; i=0; until(i==10000){i+=1}'
としてみた限りではそれほど違わないみたいですねえ.
|−−−−−
||適切なメソッドが無くてイテレータ以外ではトラバースでき
||ない可能性だってあります.
||----
|| whileループでダメな場合があるわけですね.
|そうです.むしろこっちを重視したいです.イテレータの本来の目
|的ですから.
|−−−−
|
| 昔,whileですべてOKとか習ったような気がするのですが.
| そんなループがあるのでしょうか?
えっと,ダイクストラの話ですね.確かにあらゆるアルゴリズムを
表現するために必要な制御構造は3つしかなくて,連接,条件分岐,
繰り返しだけがあればよいことが証明されています.
私のいっているのはそのことではなくて,あるクラス(自分で定義
したのではない)をトラバースする時に,whileでトラバースするた
めのメソッドが用意されていない可能性があるということです.も
ちろん自分でクラスを定義しなおせば良いことなのですが,面倒で
しょう?