[ruby-dev:8] [Problem] for local class
From:
keiju@... (Keiju ISHITSUKA)
Date:
1997-07-28 22:11:59 UTC
List:
ruby-dev #8
けいじゅ@フリーももうすぐ終り(;_;です.
# そういえば松本氏もだね.
In [ruby-dev :00002 ] the message: "[ruby-dev:2] Re: [ruby-list:3516]
Re: [Problem] for local class ", on Jul/28 23:53(JST)
matz@netlab.co.jp (Yukihiro Matsumoto) writes:
>これはruby-devに引っ越すべきでしょう.うまくいくのかな.
うまくいったようです.
# ただ, Subjectが... Re:がいっぱい(;_;
>|クラス定数と同じ動きにはできないんですか? クラス定数は後者でもないと思
>|いますが...
>クラス定数は確かにそうなっていますね.しかし,クラス定数はも
>ともと親クラスと値が変わることは望ましくないと考えているので
>-wオプションを付けている時には警告を出しているのですが.
いや. それもそうなんですよね. rubyの動作がこうなっているのを知って, わ
たしもちょっと意外に思ったことがあります.
さらに, rubyの場合は, トーカルクラスコンテキストとサブクラスコンテクス
トが両方ともこういう感じになっていますよね. つまり:
class Foo1
Bar1 = "Bar1"
def foo
print Bar1
end
end
class Foo2 < Foo1
Bar1 = "Bar2"
def foo
print Bar1
end
end
Foo1.new.foo
Foo2.new.foo
=====
Bar1Bar2
ですし,
class Foo1
Bar1 = "Bar1"
class Foo2 < Foo1
Bar1 = "Bar2"
def foo
print Bar1
end
end
def foo
print Bar1
end
end
Foo1.new.foo
Foo1::Foo2.new.foo
=====
Bar1Bar2
となっていますよね.
>実際にはどうあるべきなんでしょうか.もう少し議論を深める必要
>がありそうです.
ですね...
まず, 上記の2つの問題があるとは思っているのですが, 後者だけ気になって
いるのでしょうか?
とりあえずですが, 私の感覚としては, 一番内側ほど優先して欲しいというの
があります.
またまた, Cの例になりますが:
{
int foo = 1;
{
int foo = 2;
printf("%d", foo);
}
printf("%d", foo);
}
=====
21
となります. これが一番直観にはあっていると思っています.
# 松本氏は嫌いであると噂が立っているpascalもそうですよね.
つまり, 現状の動作でそれほどおかしくはないって感じています. 意外には感
じるが道理は通っているって感じです.
>|ただ, クラス定数にも問題があって, class Bar 内部からトップレベルのFoo
>|を簡単には参照できないですよね?
>Object::Fooじゃだめ?
おぉ!! 気づかなかった!!!! 全然問題ないです!!
# ただ, (同名ローカルクラスが許されたとして)ローカルクラスでObjectがあ
# ると困るかな... Objectだけは, 再定義しちゃ駄目といえば済むかな...
.........................................石塚 圭樹@今はフリー(^^;;...
------->>また, アドレス変わりました!! e-mail: keiju@bc.mbn.or.jp <<---