From: Minero Aoki Date: 2000-02-21T18:19:52+09:00 Subject: [ruby-dev:9264] Re: ruby object あおきです。 In mail "[ruby-dev:9263] Re: ruby object" matz@netlab.co.jp (Yukihiro Matsumoto) wrote: > まつもと ゆきひろです > |Object に「インタープリタオブジェクト」みたいなものを返す > |current というメソッドを定義するというのはどうでしょうか。 > |そのインタープリタオブジェクトは $ 系変数をもう少しわかりやすい > |名前のメソッドで提供します。 > > うーん、これらグローバル変数はそれぞれの機能に所属するもので、 > インタプリタに所属するもんじゃないんじゃないですかね。例外は > $SAFE ですが、これもスレッド独立ですから、スレッドに付加して > も良いかなあ。 では、インタプリタでなく「場」オブジェクトと見るとどうでしょう? $~ のようなものはコードの推移とともに移りかわってゆくフィールドの ようなものとみなせませんか? そのようなフィールドのホルダとしての「場」(電界みたいな?)を current で得るわけです。 しかしたしかに $ 変数はたくさんあり機能にばらつきがあるので、 全部 current にするのも無理そうです。そこで、今ある $ 変数/定数を みなおして分類して、それぞれ別のホルダを割りあてることを 考えてみます。 例外 $! $@ マッチ $+ $& $` $' $1,$2... $~ $= 文字列 $, $; IO $/ $\ $. $< $> $_ $stdin $stdout $stderr $FILENAME (STDIN STDOUT STDERR ARGF) 外部環境 $? ENV アプリケーションとしての Ruby のパラメータ $0 $* $$ $: $" $DEBUG $VERBOSE $KCODE(正規表現?) RUBY_VERSION RUBY_RELEASE_DATE RUBY_PLATFORM このうち「例外 マッチ 文字列」の 3 つは current でよさそうに思います。 残りの「環境 パラメータ」は ruby (インタプリタオブジェクト)で、 IO は stdio でしょうか。 (Object のメソッドにしなくても、Current とか STDIO とかの名前で モジュールを用意すればいいのかもしれない。) なんにしても、Regexp.post_match よりは current.post_match のほうが ちょっといいかなあと思います。 ------------------------------------------------------------------- あおきみねろう