[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 <<---