[#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:126] Re: i++ ????
From:
matz@... (Yukihiro Matsumoto)
Date:
1996-02-05 03:14:39 UTC
List:
ruby-list #126
まつもと ゆきひろ@トヨタケーラムです.
In message "[ruby-list:125] i++ ????"
on 96/02/05, P nakawtse <nakawtse@syrinx.dq.isl.ntt.jp> writes:
|中渡@NTTです.
|
|-----------
|まつもと ゆきひろ@トヨタケーラムです.
|どうも私の説明が悪いんでしょうね.
|-----------
| 謎が深まってしまいました.#寝た子をおこすな?(^^).
いいですよ,納得するまで説明させてください.
|Cのレベルでは「変数iの値に1を加える」という変数に対する操作
|ですよね.
|---------------
| 値に対する操作って.
| 1++ -> 2
| ということですか?
そうですね.1オブジェクトに++メッセージを送ると2になるという
のが値に対する操作としての「++」というつもりでした.ただし,
これは明らかにおかしいのでrubyでもできません.つまり,rubyの
メソッドは基本的に値に対する操作だが,++は値に対する操作とし
て実現するのは無理があるという意味です.
| ちなみに
| print 1++; −> -:1: syntax error
| でした???
えーと,上で説明したような理由もあって,rubyでは「i++」とい
う文法はサポートしていません.だからシンタックスエラーになり
ます.
なぜサポートしていないかもうすこし詳しくいうと
# 繰り返しになりますが
* 「i++」という式をオブジェクト指向的にとらえるとするならば,
「変数オブジェクトiに++というメッセージを送って格納されて
いる値を『次の』値にする」という動作であるべきだと(松本は)
考える.
* しかし,rubyでは変数はオブジェクトではなく,変数に対する
操作(参照と代入)は言語組込みの機能である.
* ここで「i++」を実装するために変数をオブジェクト化するとい
う選択肢も考えられないことはないが,たかが「i++」を実装す
るだけのためにそれだけのことをするのは大げさな気がするし,
言語の他の部分への影響も大きそうだ.
* しかも,rubyの文法に「i++」を導入しても,結局はメソッド呼
出になるわけで,「i+=1」に比べて,それほど実行が高速にな
るわけではないと容易に予想される(多分かえって遅くなる).
* C++では整数型の変数に`++'が適用されると,変数の値を1増や
し,それ以外の型の変数に`++'が適用されるとoperator ++を呼
び出すことになっている.しかし,これは1)変数に型の無い
rubyでは静的に実現できない,2)実行時に動的に判別したとし
ても,実行速度が高速になるわけでもなく,オブジェクト指向
的な意味づけもはっきりしない,という理由でrubyでは採用し
なかった.
ということです.
| やっぱり動作を調べないとダメなのか???
| #シンタックスを縮小して動かせます?
parse.yに手をいれればもちろん可能ですけど,そうとうyaccに詳
しくないと止めた方が良いと思います.
|#このMLはfmlですか?
そうです.過去のメイルも参照できるはずです.