[#3] Re: [ruby-list:3517] Re: meta programming features — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

28 messages 1997/07/28
[#6] Re: [ruby-list:3517] Re: meta programming features — keiju@... (Keiju ISHITSUKA) 1997/07/28

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

[#11] Re: [ruby-list:3517] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/07/29

まつもと ゆきひろです

[#14] Re: [ruby-list:3517] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/07/29

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

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

まつもと ゆきひろです

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

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

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

まつもと ゆきひろです

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

けいじゅ@今日でフリーは終り(;_;です.

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

まつもと ゆきひろです

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

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

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

まつもと ゆきひろです

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

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

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

まつもと ゆきひろです

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

From: keiju@... (石塚圭樹 )
Date: 1997-07-31 10:56:16 UTC
List: ruby-dev #27
けいじゅ@今日でフリーは終り(;_;です. 

In [ruby-dev :00023 ] the message: "[ruby-dev:23] Re: meta programming
features ", on Jul/31 17:22(JST) matz@netlab.co.jp (Yukihiro
Matsumoto) writes:

>|そうすると, 参照に関しては静的なスコープ(BarClass)になるが代入される変
>|数は動的なスコープ(FooClass)になるってことですか?
>
>そうなりますね.

>|class BarClass
>|  Foo = "Bar"
>|  FooClass.eval "Foo = Foo"
>|end
>|
>|は, FooClass::Foo = BarClass::Foo がおこなわれることになる??
>
>そうなりますね.
>
>|分かりやすいような分かりにくいような... 
>
>そうですね.どうしたら分かりやすいと思いますか?

分かりにくいとか何とかという問題よりも, この仕様で本当に矛盾がないかが
不安ですよね. それさえなければ, これでもまあいいかとは思うのですが...

ローカル変数の場合も同じになるんですかね?

  class BarClass
    foo = "Bar"
    FooClass.eval "
      print foo
      foo = 'Foo'
      print foo"
    print foo
  end

は どうなるんでしょう? 静的変数と同じ動作? 

そうすると, 静的変数もローカル変数も代入だけで参照ができないってことに
なりますね. それは問題のような...

いま, 別スレッドでやっている静的変数の問題と同じになっていればいいのか
な? つまり, 代入された時点で参照すべき静的変数が変更される. つまり, 上
記の場合:

  class BarClass
    foo = "Bar"
    FooClass.eval "
      print foo     #BarClass::foo
      foo = 'Foo'   #FooClass::fooへの代入
      print foo"    #FooClass::fooの参照
    print foo
  end

という感じです. この場合ローカル変数なのでちょっと違和感がないでもない
ですが, 別スレッドのが実現されたら, 静的変数の場合まさにこのような動作
になりますものね?

ということで, 上記のような動作は, それほど矛盾していないし道理にも実は
あっているということで納得しました.

話しは違うというか, ローカル変数の問題にはからむんですが, 以下のはでき
なかったんですね:

  class BarClass
    foo = "Bar"
    class FooClass
      print foo       # undefind variable
    end
  end

これっていうのは, 内側のclass...でコンテキストが変わっているんですね?
その時, 静的変数は引き継いでいるが, ローカル変数は引き継いでいないと?

__
.........................................石塚 圭樹@今はフリー(^^;;...
------->>また, アドレス変わりました!! e-mail: keiju@bc.mbn.or.jp <<---

In This Thread