[#3305] Observable#notify_observers — shugo@... (maeda shugo)

前田です。

22 messages 1997/07/09

[#3329] meta programming features — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

44 messages 1997/07/11
[#3330] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/07/11

けいじゅ@今はフリー(^^;;;です.

[#3332] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/07/11

まつもと ゆきひろ%最終出社日です

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

けいじゅ@今はフリー(^^;;;です.

[#3343] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/07/14

まつもと ゆきひろです

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

けいじゅ@今はフリー(^^;;;です.

[#3346] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/07/14

まつもと ゆきひろです

[#3349] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/07/15

けいじゅ@今はフリー(^^;;;です.

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

まつもと ゆきひろです

[#3353] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/07/15

けいじゅ@今はフリー(^^;;;です.

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

まつもと ゆきひろです

[#3361] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/07/16

けいじゅ@今はフリー(^^;;;です.

[#3365] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/07/16

まつもと ゆきひろです

[#3366] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/07/16

けいじゅ@今はフリー(^^;;;です.

[#3391] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/07/18

まつもと ゆきひろです

[#3398] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/07/19

けいじゅ@今はフリー(^^;;;です.

[#3401] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/07/19

まつもと ゆきひろです

[#3406] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/07/22

けいじゅ@今はフリー(^^;;;です.

[#3410] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/07/22

まつもと ゆきひろです

[#3415] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/07/23

けいじゅ@今はフリー(^^;;;です.

[#3375] Exception — keiju@... (Keiju ISHITSUKA)

けいじゅ@今はフリー(^^;;です.

19 messages 1997/07/17
[#3383] Re: Exception — matz@... (Yukihiro Matsumoto) 1997/07/18

まつもと ゆきひろです

[#3388] Re: Exception — keiju@... (石塚圭樹 ) 1997/07/18

けいじゅ@今はフリー(^^;;;です.

[#3392] Re: Exception — matz@... (Yukihiro Matsumoto) 1997/07/18

まつもと ゆきひろです

[#3403] sorry for ruby-list trouble — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

18 messages 1997/07/22
[#3404] Re: sorry for ruby-list trouble — keiju@... (石塚圭樹 ) 1997/07/22

けいじゅ@今はフリー(^^;;;です.

[#3408] Re: sorry for ruby-list trouble — matz@... (Yukihiro Matsumoto) 1997/07/22

まつもと ゆきひろです

[#3414] Re: sorry for ruby-list trouble — keiju@... (石塚圭樹 ) 1997/07/23

けいじゅ@今はフリー(^^;;;です.

[#3420] Re: sorry for ruby-list trouble — matz@... (Yukihiro Matsumoto) 1997/07/23

まつもと ゆきひろです

[#3434] [Q] Thread — keiju@... (Keiju ISHITSUKA)

けいじゅ@今はフリー(^^;;です.

44 messages 1997/07/24
[#3444] Re: [Q] Thread — matz@... (Yukihiro Matsumoto) 1997/07/24

まつもと ゆきひろです

[#3455] Re: [Q] Thread — keiju@... (石塚圭樹 ) 1997/07/24

けいじゅ@今はフリー(^^;;;です.

[#3461] Re: [Q] Thread — matz@... (Yukihiro Matsumoto) 1997/07/25

まつもと ゆきひろです

[#3464] Re: [Q] Thread — keiju@... (石塚圭樹 ) 1997/07/25

けいじゅ@今はフリー(^^;;;です.

[#3483] Re: [Q] Thread — matz@... (Yukihiro Matsumoto) 1997/07/25

まつもと ゆきひろです

[#3528] Re: [Q] Thread — shugo@... (maeda shugo) 1997/07/28

前田です。

[#3537] Re: [Q] Thread — shugo@... (maeda shugo) 1997/07/29

前田です。

[#3542] Re: [Q] Thread — shugo@... (maeda shugo) 1997/07/30

前田です。

[ruby-list:3419] Re: meta programming features

From: matz@... (Yukihiro Matsumoto)
Date: 1997-07-23 22:34:55 UTC
List: ruby-list #3419
まつもと ゆきひろです

In message "[ruby-list:3415] Re: meta programming features"
    on 97/07/23, 石塚圭樹 <keiju@bc.mbn.or.jp> writes:

|けいじゅ@今はフリー(^^;;;です. 

|>例示された中では ingredients くらいならなんか伝わる気がしま
|>すけど.
|
|やっぱ, flavors ですかねえ...

ですかねえ.もうちょっとかんがえましょう.

|>これでも外側のスコープでaがローカル変数として代入されている
|>場合とそうでない場合で挙動が違ってしまいます.
|
|そうなんだ, 
|
|  a = "Foo"
|  proc{|a| a = "Bar"}.call
|  print a
|=======================
|  Foo
|
|となるという意味? 

ちゃいます.この場合 a は(イテレータブロックの外で代入されて
いるので)常に静的ローカル変数です.ですから,この結果は

=======================
  Bar

です.動的ローカル変数とは「イテレータブロックの中で最初に代
入された変数」のことです.

|>|a = "Foo"
|>|eval "|a| A = a", Foo.class_binding, a
|>
|>evalじゃない別のものになってしまいますけど,これはこれで意味
|>があるのかなあ.
|
|別のものですか... 

evalに渡す文字列はrubyプログラムですが,"|a| A = a"は完全な
rubyプログラムではありませんから.たとえば,

  ruby -ce "|a| A = a"

してみれば分かると思いますが.

|うーん. なるほど... ところで, バインディングってどんなオブジェクトなん
|です? 

構造はProcと同じです.ちなみにProcをbindingとして渡しても動
作します.Procはイテレータがスタック上に持っている情報をオブ
ジェクト化したもので,だいたい以下のようなものを持っています.

  * 静的ローカル変数フレーム
  * 動的ローカル変数フレーム
  * self
  * 現在のclass(定数・メソッドの定義先)
  * そのほか付加的な値

|そうすると, 考えられるAPIとしては:
|
|  Module#モジュール定義

   Module#newが使えるようになります.

|  Module#クラス定義

   Class#newが使えるようになります.

|  Module#定数定義

   Module#set_constant(name, value)にしましょう.

|  Module#メソッド定義

   名前はModule#define_methodで良いと思うのですが,どういう
   APIにしましょうか?

     Foo.define_method("foo") do |arg|
        ..
     end

   なんてのも変な気がしますが

     Foo.define_method("foo", "arg", "...")

   よりはましな気がします("..."はメソッドの定義部).

|  Module#alias

   Module#alias_method(new, old)にしましょう.

|  Module#undef

   Module#undef_method(name)にしましょう.

|ぐらいですか. あと, Module/Class 関係のメソッドでprivateなメソッドがあ
|りますが, それをpublicにする必要がありますね. 

public,private,module_functionなどですか? うーん,そうした
方が良いのでしょうか.せっかくprivateになっているのになあ,
という気もしますが.…仕方ないか.

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

In This Thread