From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) Date: 1997-10-16T11:29:04+09:00 Subject: [ruby-dev:747] package [Re: [REQ] require/load] けいじゅ@日本ラショナルソフトウェアです. 最近は新しいマシンにかかりっきりで, rubyしている暇があまりないです... それに, 仕事も忙しくなってきたし(;_; In [ruby-dev :00734 ] the message: "[ruby-dev:734] Re: [REQ] require/load ", on Oct/14 11:02(JST) matz@netlab.co.jp (Yukihiro Matsumoto) writes: >まつもと ゆきひろです >|となって, Readlineモジュールがclass BC__のネームスコープ外に出てしまう >|のでちょっと気になったのでした. こういう問題って, デバッガ(を実現する >|クラス)などでも同様ですよね. > >これはやっぱり外でよいのではないでしょうか? > >なんで気になったのか不明ですが,気にする必要はないと思います. >だってそのためのrequire(すでにloadされているかどうか気にする >必要がない)なんですから. Readlineという名前のclass/moduleが作れないなと思ったのでした. 何もない 生rubyでは可能ですからね. >もし,readlineをrequireしたにもかかわらずそれがどこかのネー >ムスペース内にしか存在しないのであれば,かえって他の部分で >readlineをrequireした時の動作がおかしくなると思います. > requireされているのでロードしないが,ロードされないのに > ネームスペース上にreadlineが存在しない…. > >ダイナミックリンクライブラリが二重にロードできないことも絡ん >で来ますね. うーん. なるほど... といいたいところですが, ダイナミックリンクライブラ リをロードすることと, それをruby上にどう表現するかは別問題ですよね? 例えば, 一度目のrequire "readline"では, readline.oをダイナミックリンク し, さらにそのネームスペースにマップする. 2度目以降の別のネームスペー スでの require "readline"では, ダイナミックリンクを行わずにその空間に マップする. というような実装もあると思います. それとは別に, ダイナミックリンクライブラリが二重にロードできないという のは, 同名(異パス)のべつオブジェクトファイルもリンクできないのでしょう か? >|>|2. あるファイルをそのネーム空間にロードする機能 >これは「あるファイルをそのネーム空間にロードする機能」なんで >すか? 今のモジュールの機能と変わらないように思うんですけど. 今の例だと, そのように見えちゃいますね. requireの機能と絡めて以下のよ うな感じですか... -- readline.o -- module Readline ... end -- rbc.rb -- package BC__ require "readline" class ReadlineInputMethod include Readline ... end ... end いわんとしていることは, requireしてもその効果は, requireしたパッケージ だけに限られていることです. __ ................................石塚 圭樹@日本ラショナルソフトェア... ----------------------------------->> e-mail: keiju@rational.com <<---