[#50] Re: [ruby-list:3596] Module#attr specification (Re: boolean values) — keiju@... (石塚圭樹 )

けいじゅ@日本ラショナルです.

11 messages 1997/08/05

[#121] Re: meta programming features — keiju@... (石塚圭樹 )

けいじゅ@日本ラショナルです.

18 messages 1997/08/13
[#122] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/08/13

まつもと ゆきひろです

[#126] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/08/14

けいじゅ@日本ラショナルです.

[#128] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/08/15

まつもと ゆきひろです

[#127] tracer — keiju@... (Keiju ISHITSUKA)

けいじゅ@いそうろう.日本ラショナルです.

36 messages 1997/08/14
[#129] Re: tracer — matz@... (Yukihiro Matsumoto) 1997/08/15

まつもと ゆきひろです

[#131] Re: tracer — keiju@... (石塚圭樹 ) 1997/08/15

けいじゅ@いそうろう.日本ラショナルです.

[#140] Re: tracer — matz@... (Yukihiro Matsumoto) 1997/08/15

まつもと ゆきひろです

[#144] Re: tracer — keiju@... (石塚圭樹 ) 1997/08/16

けいじゅ@日本ラショナルです.

[#150] Re: tracer — matz@... (Yukihiro Matsumoto) 1997/08/18

まつもと ゆきひろです

[#155] Re: tracer — keiju@... (石塚圭樹 ) 1997/08/18

けいじゅ@日本ラショナルです.

[#156] Re: tracer — matz@... (Yukihiro Matsumoto) 1997/08/18

まつもと ゆきひろです

[#162] ruby -r module [Re: tracer] — keiju@... (石塚圭樹 ) 1997/08/19

[#164] Re: ruby -r module [Re: tracer] — WATANABE Hirofumi <watanabe@...> 1997/08/19

わたなべです.

[#185] Re: [ruby-list:3720] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 )

26 messages 1997/08/20
[#186] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/20

[#193] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/20

けいじゅ@日本ラショナルです.

[#194] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/20

まつもと ゆきひろです

[#195] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/20

けいじゅ@日本ラショナルです.

[#200] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/20

まつもと ゆきひろです

[#207] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/22

けいじゅ@日本ラショナルです.

[#209] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/22

まつもと ゆきひろです

[#211] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/22

けいじゅ@日本ラショナルです.

[#212] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/22

まつもと ゆきひろです

[#213] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/22

[#214] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/22

まつもと ゆきひろです

[#215] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/22

[#217] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/22

まつもと ゆきひろです

[#218] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/22

けいじゅ@日本ラショナルです.

[#257] [BUG] MLF — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルです.

24 messages 1997/08/26
[#259] Re: [BUG] MLF — matz@... (Yukihiro Matsumoto) 1997/08/26

まつもと ゆきひろです

[#261] Re: [BUG] MLF — keiju@... (石塚圭樹 ) 1997/08/26

けいじゅ@日本ラショナルです.

[#262] Re: [BUG] MLF — keiju@... (石塚圭樹 ) 1997/08/26

けいじゅ@日本ラショナルです.

[#263] Re: [BUG] MLF — matz@... (Yukihiro Matsumoto) 1997/08/26

まつもと ゆきひろです

[#264] Re: [BUG] MLF — keiju@... (石塚圭樹 ) 1997/08/26

けいじゅ@日本ラショナルです.

[#267] Re: [BUG] MLF — matz@... (Yukihiro Matsumoto) 1997/08/26

まつもと ゆきひろです

[#268] Re: [BUG] MLF — keiju@... (石塚圭樹 ) 1997/08/26

けいじゅ@日本ラショナルです.

[#269] Re: [BUG] MLF — matz@... (Yukihiro Matsumoto) 1997/08/26

まつもと ゆきひろです

[#270] Re: [BUG] MLF — keiju@... (石塚圭樹 ) 1997/08/26

けいじゅ@日本ラショナルです.

[#291] illegal here document — shugo@... (前田 修吾 / maeda shugo)

前田です。

15 messages 1997/08/27
[#293] Re: illegal here document — matz@... (Yukihiro Matsumoto) 1997/08/28

まつもと ゆきひろです

[#309] [BUG] method index — keiju@... (Keiju ISHITSUKA)

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

16 messages 1997/08/28
[#310] Re: [BUG] method index — matz@... (Yukihiro Matsumoto) 1997/08/28

まつもと ゆきひろです

[#311] Re: [BUG] method index — keiju@... (石塚圭樹 ) 1997/08/28

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

[#312] Re: [BUG] method index — matz@... (Yukihiro Matsumoto) 1997/08/28

まつもと ゆきひろです

[#316] [Q] [Re: [BUG] method index] — keiju@... (石塚圭樹 ) 1997/08/28

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

[#320] Re: [Q] [Re: [BUG] method index] — matz@... (Yukihiro Matsumoto) 1997/08/29

まつもと ゆきひろです

[#324] virtual class [Re: [Q] [Re: [BUG] method index] ] — keiju@... (石塚圭樹 ) 1997/08/29

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

[ruby-dev:122] Re: meta programming features

From: matz@... (Yukihiro Matsumoto)
Date: 1997-08-13 06:44:02 UTC
List: ruby-dev #122
まつもと ゆきひろです

In message "[ruby-dev:121] Re: meta programming features"
    on 97/08/13, 石塚圭樹 <keiju@bc.mbn.or.jp> writes:

|けいじゅ@日本ラショナルです.

|foo = Foo.new
|foo.eval "X = 1"
|
|は何を行うことになるのでしょう?
|
|1. 常に, Foo#Xを定義する.
|2. 常に, fooの特異クラスのXを定義する.
|3. Foo#Xがなければ Foo#Xの定義, 存在すればfooの特異クラスのXを定義する.
|4. 今のところ未定義
|5. その他

4です.どうするのが良いと思いますか?
現行eval(private)では1ですね.

現行evalの基本は「そこにコードがそのままあった場合と同じ動き
をする」ことです.しかし,そもそもメソッド定義と定数定義には
存在できない場所がありますから,そういう場所でもevalの挙動は
任意に決められるわけです.

で,現状ではそのメソッドを定義している(定義を囲んでいる)クラ
スをメソッド,定数の定義先としているわけです.

で,考えられる変更点は

  * evalをpublicにする

    この場合,「コードがそこに」というのは成立しなくなります
    が,これは「コードがそのクラスのメソッドに」ということで
    まあ,受け入れられると思います.

  * evalでのメソッドとクラスの定義先をクラスから特異クラスに
    変更する.

    互換性は無いですが,受け入れられないことは無い変更です.
    ただし,関数形式でevalが呼ばれた時には現在の動作の方が自
    然に見える気はします.

    逆にメソッド形式で呼ばれた時には特異クラスに定義した方が
    自然なんですよねえ.とはいえ,メソッドが関数形式で呼ばれ
    たかどうか知る方法は無いですし.

なんですよねえ.

|トップレベルにおいて, evalで関数定義を行うと:
|
|  eval "def foo; ...; end"
|
|メインオブジェクトの特異メソッド定義になっちゃうわけですよね?

それはいくらなんでも使いにくいんで,Object#evalの挙動を変更
するなら,main.evalを再定義して,トップレベルではObjectクラ
スに対してメソッドや定数を定義するようにするでしょう,多分.

|で, どうしたらいいかというと:
|
|1. このまま.
|2. メソッド定義は定数定義と合わせる.
|3. 特異メソッドfooが定義されていれば, 特異メソッドの定義. 定義されてい
|   なければFoo#fooの定義. 特異メソッドを明示的に定義したい時には, def
|   obj.foo を用いる.
|4.
|
|などなどがあると思います.

なんか3は動きが複雑だなあ.定数メソッドともクラスにするか特
異クラスにするかどちらかで統一した方が良さそうに思います.

|Object#typeは, 特異クラスを返した方がいいのか, あくまでもクラスを返し
|た方がいいのか...

なんとなく特異クラスを返そうという気になっています.

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

In This Thread