[#50] Re: [ruby-list:3596] Module#attr specification (Re: boolean values) — keiju@... (石塚圭樹 )

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

11 messages 1997/08/05

[#121] Re: meta programming features — keiju@... (石塚圭樹 )

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

18 messages 1997/08/13
[#122] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/08/13

まつもと ゆきひろです

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

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

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

まつもと ゆきひろです

[#127] tracer — keiju@... (Keiju ISHITSUKA)

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

36 messages 1997/08/14
[#129] Re: tracer — matz@... (Yukihiro Matsumoto) 1997/08/15

まつもと ゆきひろです

[#131] Re: tracer — keiju@... (石塚圭樹 ) 1997/08/15

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

[#140] Re: tracer — matz@... (Yukihiro Matsumoto) 1997/08/15

まつもと ゆきひろです

[#144] Re: tracer — keiju@... (石塚圭樹 ) 1997/08/16

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

[#150] Re: tracer — matz@... (Yukihiro Matsumoto) 1997/08/18

まつもと ゆきひろです

[#155] Re: tracer — keiju@... (石塚圭樹 ) 1997/08/18

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

[#156] Re: tracer — matz@... (Yukihiro Matsumoto) 1997/08/18

まつもと ゆきひろです

[#162] ruby -r module [Re: tracer] — keiju@... (石塚圭樹 ) 1997/08/19

[#164] Re: ruby -r module [Re: tracer] — WATANABE Hirofumi <watanabe@...> 1997/08/19

わたなべです.

[#185] Re: [ruby-list:3720] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 )

26 messages 1997/08/20
[#186] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/20

[#193] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/20

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

[#194] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/20

まつもと ゆきひろです

[#195] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/20

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

[#200] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/20

まつもと ゆきひろです

[#207] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/22

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

[#209] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/22

まつもと ゆきひろです

[#211] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/22

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

[#212] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/22

まつもと ゆきひろです

[#213] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/22

[#214] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/22

まつもと ゆきひろです

[#215] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/22

[#217] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/22

まつもと ゆきひろです

[#218] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/22

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

[#257] [BUG] MLF — keiju@... (Keiju ISHITSUKA)

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

24 messages 1997/08/26
[#259] Re: [BUG] MLF — matz@... (Yukihiro Matsumoto) 1997/08/26

まつもと ゆきひろです

[#261] Re: [BUG] MLF — keiju@... (石塚圭樹 ) 1997/08/26

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

[#262] Re: [BUG] MLF — keiju@... (石塚圭樹 ) 1997/08/26

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

[#263] Re: [BUG] MLF — matz@... (Yukihiro Matsumoto) 1997/08/26

まつもと ゆきひろです

[#264] Re: [BUG] MLF — keiju@... (石塚圭樹 ) 1997/08/26

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

[#267] Re: [BUG] MLF — matz@... (Yukihiro Matsumoto) 1997/08/26

まつもと ゆきひろです

[#268] Re: [BUG] MLF — keiju@... (石塚圭樹 ) 1997/08/26

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

[#269] Re: [BUG] MLF — matz@... (Yukihiro Matsumoto) 1997/08/26

まつもと ゆきひろです

[#270] Re: [BUG] MLF — keiju@... (石塚圭樹 ) 1997/08/26

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

[#291] illegal here document — shugo@... (前田 修吾 / maeda shugo)

前田です。

15 messages 1997/08/27
[#293] Re: illegal here document — matz@... (Yukihiro Matsumoto) 1997/08/28

まつもと ゆきひろです

[#309] [BUG] method index — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

16 messages 1997/08/28
[#310] Re: [BUG] method index — matz@... (Yukihiro Matsumoto) 1997/08/28

まつもと ゆきひろです

[#311] Re: [BUG] method index — keiju@... (石塚圭樹 ) 1997/08/28

けいじゅ@日本ラショナルソフトウェアです.

[#312] Re: [BUG] method index — matz@... (Yukihiro Matsumoto) 1997/08/28

まつもと ゆきひろです

[#316] [Q] [Re: [BUG] method index] — keiju@... (石塚圭樹 ) 1997/08/28

けいじゅ@日本ラショナルソフトウェアです.

[#320] Re: [Q] [Re: [BUG] method index] — matz@... (Yukihiro Matsumoto) 1997/08/29

まつもと ゆきひろです

[#324] virtual class [Re: [Q] [Re: [BUG] method index] ] — keiju@... (石塚圭樹 ) 1997/08/29

けいじゅ@日本ラショナルソフトウェアです.

[ruby-dev:338] Re: virtual class [Re: [Q] [Re: [BUG] method index] ]

From: keiju@... (石塚圭樹 )
Date: 1997-08-31 07:38:50 UTC
List: ruby-dev #338
けいじゅ@日本ラショナルソフトウェアです.

In [ruby-dev :00336 ] the message: "[ruby-dev:336] Re: virtual class
[Re: [Q] [Re: [BUG] method index] ] ", on Aug/31 01:30(JST)
matz@netlab.co.jp (Yukihiro Matsumoto) writes:

>まつもと ゆきひろです

>|def self.foo
>|  ...
>|end
>|
>|の中では, 定数の参照のスコープは仮想クラスにスイッチすべきじゃないんで
>|すかねぇ?
>
>過去のある時点で定数のスコープは静的なものにしようと思ったか
>らです.たしか,ネストしたクラスの問題について考えていた時だっ
>たよなあ.これはこういうものだと思って下さい.

そういわれると, 何もいえないのですが... 

class Foo
  X = "foo"
end

f = Foo.new
def f.foo
  print X
end
f.foo

は, 駄目なんですね... これが静的って意味ですか...

でも, 動的な部分もありますよね? サブクラスとそこで定義されたメソッドで
は, 上位のクラスの定数を参照できますが, これは明らかに動的だと思うんで
すが?

  class Foo
    X = "foo"
  end
  
  class Bar < Foo
    def foo
      print X
    end
  end
  
  Bar.new.foo

これだって, 静的であると考えると参照できないはずじゃないですか? この場
合は, BarはFooを含んでいるから参照できるって考えるんですかねえ?

そういえば, 次のプログラムはちゃんと思った通りの動作をしますね.

  class Foo
    X = "foo"
  end
  
  class Bar < Foo
  end
  
  b = Bar.new
  class << b
    def foo
      print X, "\n"
    end
  end
  b.foo
  
  class Bar
    X = "bar"
  end
  b.foo
  
  class << b
    X = "b"
  end
  b.foo
=================
foo
bar
b

うーん. これなら納得できます(^^;;;

つまり, 定数の決定は静的スコープで決定されると. で, 実際に参照された時
は, 

1. その静的スコープカレントだったクラスの定数
2. その静的スコープカレントだったクラスのスーパクラスの定数
3. その静的スコープでスコープの階層を遡っていく.

ってなっているんですね.

# って, 何度もいわれているか... 

特異メソッドはどこでも定義できるので, ちょっと違和感があるだけですね.
たとえば,

class Foo
  X = "foo"
end

F = Foo.new
class Bar
  X = "bar"
  def F.foo
    print X, "\n"
  end
end
  
F.foo
=====
bar

ですものね. 

# 自己完結メイルだった... まあ, FAQネタになったということで.

なんで, 今な話になったのかな...

以下のメイルでしたね.

In [ruby-dev :00329 ] the message: "[ruby-dev:329] Re: virtual class
[Re: [Q] [Re: [BUG] method index] ] ", on Aug/29 15:04(JST)
matz@netlab.co.jp (Yukihiro Matsumoto) writes:

>まつもと ゆきひろです

>|いえいえ. インスタンス変数は保証しないが, クラス定数は保証して欲しいん
>|ですけど... 
>
>そうなんですか? まあ,現状では沿うなっているんで構わないと
>言えば構わないんですが.
>
>|インスタンス変数はclass<<の中でしかアクセスできないので, 別のclass<<で
>|値が変わっても変ではないですが(変数の連続性がない), クラス定数はインス
>|タンスから常にアクセスできますので(変数の連続性がある), class<<毎に値
>|が変わるってのも変ですよね?
>
>クラス定数も class << から end までの間でしか参照できません
>けど.あれ,もしかして
>
>  class << self
>    Foo = 25
>  end
>
>  def self.foo
>    p Foo
>  end
>  self.foo
>
>で25が参照できると思っておいでですか? 定数の参照スコープは
>もっと静的です.

  class << self
    Foo = 25
    def foo
       p Foo
    end
  end
  self.foo

なら. OKですものね. 途中に

>クラス定数も class << から end までの間でしか参照できません
>けど.あれ,もしかして

という言葉があったので誤解してしまいました... class << ... endで定義さ
れたメソッドからしか参照できないってことですね. まあ, それでも, 仮想ク
ラスのクラス定数が常にアクセスできることには変わりませんから, クラス定
数は常に同じものがアクセスできるとして下さい.

でも, そこまでやるんだったら, 仮想クラスは常に同じクラスであるとした方
が分かりやすいかなあ.....


__
................................石塚 圭樹@日本ラショナルソフトェア...
----------------------------------->> e-mail: keiju@bc.mbn.or.jp <<---

In This Thread