[#25808] break & retry in block — Shin-ichiro HARA <sinara@...>

原です。

15 messages 2005/03/04

[#25812] Re: [ruby-cvs] ruby/test/ruby, ruby/test/logger, ruby/sample, ruby/misc, ruby/lib/xmlrpc, ruby/lib/wsdl/soap, ruby/lib/rexml, ruby/lib/rdoc/parsers, ruby/lib/rdoc/generators, ruby/lib/irb, ruby/lib, ruby/ext/zlib, ruby/ext/win32ole, ruby/ext/tk, ruby/ext/strscan, ruby/ext/socket, ruby/ext/readline, ruby/ext/pty, ruby/ext/openssl, ruby/ext/iconv, ruby/ext/etc, ruby/ext/dl, ruby/ext/curses, ruby/ext/bigdecimal, ruby/ext/Win32API, ruby: * array.c: replace rb_protect_inspect() and rb_inspecting_p() by — Tanaka Akira <akr@...17n.org>

In article <20050304064753.53859C671F@lithium.ruby-lang.org>,

3 messages 2005/03/06

[#25853] conflict method and local variable — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

56 messages 2005/03/10
[#25854] Re: conflict method and local variable — Yukihiro Matsumoto <matz@...> 2005/03/10

まつもと ゆきひろです

[#25855] Re: conflict method and local variable — Hidetoshi NAGAI <nagai@...> 2005/03/10

永井@知能.九工大です.

[#25856] Re: conflict method and local variable — Yukihiro Matsumoto <matz@...> 2005/03/10

まつもと ゆきひろです

[#25857] Re: conflict method and local variable — Hidetoshi NAGAI <nagai@...> 2005/03/11

永井@知能.九工大です.

[#25858] Re: conflict method and local variable — Yukihiro Matsumoto <matz@...> 2005/03/11

まつもと ゆきひろです

[#25861] Re: conflict method and local variable — Hidetoshi NAGAI <nagai@...> 2005/03/11

永井@知能.九工大です.

[#25863] Re: conflict method and local variable — Yukihiro Matsumoto <matz@...> 2005/03/11

まつもと ゆきひろです

[#25864] Re: conflict method and local variable — Hidetoshi NAGAI <nagai@...> 2005/03/11

永井@知能.九工大です.

[#25865] Re: conflict method and local variable — Yukihiro Matsumoto <matz@...> 2005/03/11

まつもと ゆきひろです

[#25866] Re: conflict method and local variable — Hidetoshi NAGAI <nagai@...> 2005/03/11

永井@知能.九工大です.

[#25869] Re: conflict method and local variable — Shugo Maeda <shugo@...> 2005/03/13

前田です。

[#25875] Re: conflict method and local variable — Yukihiro Matsumoto <matz@...> 2005/03/13

まつもと ゆきひろです

[#25878] Re: conflict method and local variable — Hidetoshi NAGAI <nagai@...> 2005/03/13

永井@知能.九工大です.

[#25882] Re: conflict method and local variable — Yukihiro Matsumoto <matz@...> 2005/03/13

まつもと ゆきひろです

[#25884] Re: conflict method and local variable — Hidetoshi NAGAI <nagai@...> 2005/03/14

永井@知能.九工大です.

[#25885] Re: conflict method and local variable — Yukihiro Matsumoto <matz@...> 2005/03/14

まつもと ゆきひろです

[#25888] Re: conflict method and local variable — Shugo Maeda <shugo@...> 2005/03/14

前田です。

[#25946] ext/tk/sample/**/*.gif are broken — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

16 messages 2005/03/27

[#25959] some trouble on ext/tk/sample — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

20 messages 2005/03/29
[#25969] Re: some trouble on ext/tk/sample — Hidetoshi NAGAI <nagai@...> 2005/03/30

永井@知能.九工大です.

[#25970] Re: some trouble on ext/tk/sample — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/03/30

山本です。

[#25973] Re: some trouble on ext/tk/sample — Hidetoshi NAGAI <nagai@...> 2005/03/31

永井@知能.九工大です.

[ruby-dev:25866] Re: conflict method and local variable

From: Hidetoshi NAGAI <nagai@...>
Date: 2005-03-11 15:36:26 UTC
List: ruby-dev #25866
永井@知能.九工大です.

From: Yukihiro Matsumoto <matz@ruby-lang.org>
Subject: [ruby-dev:25865] Re: conflict method and local variable
Date: Fri, 11 Mar 2005 18:49:15 +0900
Message-ID: <1110534554.020767.31742.nullmailer@x31.priv.netlab.jp>
> そうしてはどうかというアイディアを持っています。

サブクラスでの override を許してもいいようなメソッドを
呼び出している部分には,すべて self を付けておく必要がある
ということですね?
他の皆さんはどの程度の比率でサブクラスで置き換えられたくないような
メソッドを作られているのでしょうか.
私の場合は置き換えを防ぎたいものの比率が低いため,
まつもとさんの方針は「今後は self の省略を非推奨とする」と
言われているような印象を受けます.
そういう理解でよろしいでしょうか.

# Ruby/Tk では非常に多量に self を付けて回る必要がありそうです.(^_^;

以下は内部構造や言語デザインを理解していない素人の戯言です.
「馬鹿なことを」ということであれば笑って無視してください.

サブクラスなどを作っての再利用の際の利便性を考えると,
override を禁止したいものの比率の方が少なそうに感じます.

だとするなら,private_local というようなメソッドの可視クラスを用意して,
override を禁止したいもの,および上位クラスのメソッドの override とは
したくないものをこの可視クラスで定義するという方が私にはすっきりします.

その場合のメソッド検索順は以下の通りです.

あるメソッドを評価している際にレシーバを省略したメソッド M が
呼ばれたとします.

 (1) 評価しているメソッドが定義されているクラス/モジュールの
     private_local メソッドテーブルから M を検索する.
     見つかった場合は M をコール.

 (2) 現在メソッドを評価しているオブジェクトのクラスから順に
     上位のクラスに向かって private_local 以外のメソッドテーブルから
     メソッド M を検索する.
     見つかった場合は M をコール.

 (3) 見つからなければ undefined method の例外発生.

早い話が「定義したクラス/モジュールでのみ有効な (継承されない) 
プライベートメソッド」です.

lambda を代入したローカル変数も private_local として扱い,
instance_eval の中ではレシーバオブジェクトのクラスを
「評価しているメソッドが定義されているクラス」とすれば,
余計な (と私が感じている(^_^;) 影響を回避できると思います.
instance_eval の内部でどうしても呼びたければ,
ローカル変数としては見えているわけですから,
今までと同様に call すればいいですよね?

# 深くは考えてないんですが,ダメダメですかね?(^_^;
-- 
                                       永井 秀利 (九工大 知能情報)
                                           nagai@ai.kyutech.ac.jp

In This Thread