[#8257] Re: Smalltalk [Re: design patterns] — 助田 雅紀 <masaki.suketa@...>

助田です。

11 messages 1998/06/09
[#8259] Re: Smalltalk [Re: design patterns] — KIMURA Koichi <kkimura@...> 1998/06/10

[#8262] TkGrid do not exist? — Hiramatu Yoshifumi <hiramatu@...>

平松です。

26 messages 1998/06/10
[#8266] Re: TkGrid do not exist? — matz@... (Yukihiro Matsumoto) 1998/06/10

まつもと ゆきひろです

[#8269] Re: TkGrid do not exist? — NAGAI Hidetoshi <nagai@...> 1998/06/10

永井@知能.九工大です.

[#8271] Re: TkGrid do not exist? — NAGAI Hidetoshi <nagai@...> 1998/06/10

永井@知能.九工大です.

[#8375] new MethodIndex — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

21 messages 1998/06/16
[#8447] new MethodIndex — TEI meiki <tei@...> 1998/06/20

こんにちは、鄭です。

[#8448] new MethodIndex — TEI meiki <tei@...> 1998/06/20

再び、鄭です。_o_

[#8418] how to use delegate — gotoken@... (GOTO Kentaro)

ごとけんです

18 messages 1998/06/18
[#8419] Re: how to use delegate — matz@... (Yukihiro Matsumoto) 1998/06/19

まつもと ゆきひろです

[#8420] Re: how to use delegate — gotoken@... (GOTO Kentaro) 1998/06/19

ごとけんです

[#8421] Re: how to use delegate — matz@... (Yukihiro Matsumoto) 1998/06/19

まつもと ゆきひろです

[#8521] hash sort — "Kazuhiro Yoshida" <s95l980@...>

もりきゅうです。

34 messages 1998/06/26
[#8523] hash sort — gotoken@... (GOTO Kentaro) 1998/06/26

ごとけんです

[#8533] Re: hash sort — WATANABE Hirofumi <watanabe@...> 1998/06/26

わたなべです.

[#8534] Re: hash sort — gotoken@... (GOTO Kentaro) 1998/06/26

ごとけんです

[#8536] Re: hash sort — Sinichiro Dezawa <dezawa@...> 1998/06/26

出沢です

[#8538] Re: hash sort — gotoken@... (GOTO Kentaro) 1998/06/26

ごとけんです

[#8539] Re: hash sort — TAKAHASHI Masayoshi <maki@...> 1998/06/26

高橋です。

[#8541] Re: hash sort — gotoken@... (GOTO Kentaro) 1998/06/26

ごとけんです

[#8546] Re: hash sort — Tadayoshi Funaba <tadf@...> 1998/06/26

ふなばです。

[ruby-list:8388] Re: what type are true and false

From: matz@... (Yukihiro Matsumoto)
Date: 1998-06-17 05:26:10 UTC
List: ruby-list #8388
まつもと ゆきひろです

In message "[ruby-list:8387] Re: what type are true and false"
    on 98/06/17, 石塚圭樹 <keiju@Rational.Com> writes:

|けいじゅ@日本ラショナルソフトウェアです.

|とはいえ, 納得できるようなできないようなですね...
|
|    eval "foo = 0"
|    puts foo
|
|は駄目で,
|
|    eval "foo = 0"
|    eval "puts foo"
|
|はOKというのも... 直観に反していますね.

まあ,直感に反していないというつもりもないんですが,他のとこ
ろとの兼ね合いで次善だと考えています.現在のrubyの仕様と矛盾
が無い方法でこの挙動を直感に合わせるのは難しいでしょう.

たぶん,ここを直感に合わせるとirbのようなプログラムが全滅す
るのではないかと思います.

|PS.
|バグみっけました.
|# ruby_1.1b_25+patch([ruby-dev:2865],[ruby-list:8381])です.

これは…バグと呼ぶにはかわいそうな気がします(私が^^;;;).
どっちかっていうと仕様変更(ていうかバグフィックス)でしょう.

まず関数版は

|def zz
|  eval "foo = 0"               # eval内で通常ローカル変数fooの宣言
|  (proc {foo = 10}).call       # 静的な構文上はここが初出
                                # ブロック中なのでブロック内ローカル変数
|  eval "p foo"                 # 通常ローカル変数の参照
|end
|zz

という動作をしていますが,proc版は

|proc {
|  eval "foo = 0"               # ブロック内ローカル変数fooの宣言
|  (proc {foo = 10}).call       # ブロック中なのでブロック内ローカル変数
|  eval "p foo"                 # ブロック内ローカル変数fooの参照
|}.call

となります.つまり,関数版とproc版で外側のfooの変数としての
種別が違うのが原因です.以前のものではeval内で宣言されたロー
カル変数は問答無用で通常ローカル変数になってました.evalは
「その場所にその文があったと同じように動作する」というのが目
標ですから,私は以前の動作の方がバグであったと思います.

が,これがややこしいことを否定するつもりはないので,よりよい
挙動の定義があれば(それが現状を大きく崩すものでなければ)そち
らを採用しても良いと思っています.

                                まつもと ゆきひろ /:|)

In This Thread

Prev Next