[#34] [Bug] Class#superclass — shugo@... (maeda shugo)
前田です。
[#49] Re: Nil is a subclass of Object? — shugo@... (maeda shugo)
前田です。
[#50] Re: [ruby-list:3596] Module#attr specification (Re: boolean values) — keiju@... (石塚圭樹 )
けいじゅ@日本ラショナルです.
前田です。
まつもと ゆきひろです
わたなべです.
[#53] About C struct who has references to ruby objects — shugo@... (maeda shugo)
前田です。
[#58] Re: Nil is a subclass of Object? — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#78] [Bug] Socket#send, Socket#recvfrom — shugo@... (maeda shugo)
前田です。
[#97] Re: meta programming features — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#115] Re: meta programming features — WATANABE Hirofumi <watanabe@...>
わたなべです.
[#117] Re: tail recursion (Re: LaTeX ruby documents) — keiju@... (石塚圭樹 )
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
けいじゅ@日本ラショナルです.
[#121] Re: meta programming features — keiju@... (石塚圭樹 )
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
まつもと ゆきひろです
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
けいじゅ@日本ラショナルです.
[#127] tracer — keiju@... (Keiju ISHITSUKA)
けいじゅ@いそうろう.日本ラショナルです.
まつもと ゆきひろです
けいじゅ@いそうろう.日本ラショナルです.
まつもと ゆきひろです
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
わたなべです.
まつもと ゆきひろです
わたなべです.
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
けいじゅ@日本ラショナルです.
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
けいじゅ@日本ラショナルです.
[#167] argument default value — shugo@... (前田 修吾 / maeda shugo)
前田です。
[#185] Re: [ruby-list:3720] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 )
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
けいじゅ@日本ラショナルです.
けいじゅ@やっと自オフィス.日本ラショナルです.
まつもと ゆきひろです
まつもと ゆきひろです
[#189] include [Re: new sync.rb release] — keiju@... (石塚圭樹 )
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
[#221] '@' in yylex() — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
[#228] How to handle Struct — Eiji-usagi-MATSUmoto <ematsu@...>
うさぎです。
[#232] ruby for mswin32 1.1a1差分 — KIMURA Koichi <kkimura@...>
木村 です。
[#257] [BUG] MLF — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
けいじゅ@日本ラショナルです.
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
けいじゅ@日本ラショナルです.
まつもと ゆきひろです
けいじゅ@日本ラショナルです.
けいじゅ@日本ラショナルです.
[#276] Re: SyslogSendmail class — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#291] illegal here document — shugo@... (前田 修吾 / maeda shugo)
前田です。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
わたなべです.
[#309] [BUG] method index — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
[#313] ruby 1.1a4 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#330] [BUG] Module#methods — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[ruby-dev:121] Re: meta programming features
けいじゅ@日本ラショナルです.
In [ruby-dev :00114 ] the message: "[ruby-dev:114] Re: meta
programming features ", on Aug/13 13:23(JST) matz@netlab.co.jp
(Yukihiro Matsumoto) writes:
>まつもと ゆきひろです
>|なるなる. 良くわかってきました. 松本氏が気にしていたのは,
>|Object#eval()の定数とメソッド定義のところだったんですね.
>
>そういうことなんです.
なるほど.
といっても, まだ分かっていない点が1つあります. クラス定数のことです.
foo = Foo.new
foo.eval "X = 1"
は何を行うことになるのでしょう?
1. 常に, Foo#Xを定義する.
2. 常に, fooの特異クラスのXを定義する.
3. Foo#Xがなければ Foo#Xの定義, 存在すればfooの特異クラスのXを定義する.
4. 今のところ未定義
5. その他
>|>という点で,現在の実装ではこの二つのクラスは一致するようになっていま
>|>す.これを違えるのは望ましくないと思っていますが,どうしても必要なら
>|>ば変えても良いです.
>|これってどういう意味ですか? 現行のevalをObject#eval()の動きに合わせて
>|も良いという意味ですか?
>ええと,現行evalってprivateなObject#eval()なんですよね.
そうです.
>ですから,Object#eval()を導入するってことは現行eval()の仕様を変えるっ
>てことです.出来るだけ互換性を維持したいですけど.
どうなんでしょう? 今のeval()の仕様を変えると困ることになりませんか?
# それとも, eval()のなかでdefを行った時だけ困るんで, まあいいかって思っ
# ていんですかね?
トップレベルにおいて, evalで関数定義を行うと:
eval "def foo; ...; end"
メインオブジェクトの特異メソッド定義になっちゃうわけですよね? で, この
メソッドは, トップレベルでは実行可能だけども, 他のクラスコンテキストで
は呼び出せなくなるんですよねえ...
まあ,
Object.eval "def foo; ...;end; private :foo"
とすればいいんだろうけど...
さらにさらに, トップレベル以外では:
class Foo
eval "def foo; ...; end"
end
あれ? これは思った通りの動作をするか...
class << foo
eval "def foo; ...; end"
end
うーん. これも問題ないか...
class Foo
def foo
eval "def bar; ...; end"
end
end
f = Foo.new.foo
うーん. この時の動作が変わってきているんですね.
で, どうしたらいいかというと:
1. このまま.
2. メソッド定義は定数定義と合わせる.
3. 特異メソッドfooが定義されていれば, 特異メソッドの定義. 定義されてい
なければFoo#fooの定義. 特異メソッドを明示的に定義したい時には, def
obj.foo を用いる.
4.
などなどがあると思います.
いろいろ考えていて思ったのですが, 特異クラスをどのように見せていくかと
結構深く関わっているような気がします. 例えば,
obj.type.eval ...
などは, Object#typeの定義に大きく左右されますし...
Object#typeは, 特異クラスを返した方がいいのか, あくまでもクラスを返し
た方がいいのか...
__
..........................................石塚 圭樹@日本ラショナル...
----------------------------------->> e-mail: keiju@bc.mbn.or.jp <<---