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

In This Thread