青山です。 Fri, Feb 12, 1999 at 10:38:38AM +0900 において Yukihiro Matsumoto さん曰く: > |ということは、1.3以降では DelegateClass の立場はなくなる > |ということでしょうか? > > ただ単にインスタンス変数を使いたいという目的ではそうです.が, > 他にも使い道はあるのではないかと考えるものです.あるのかな? よく理解せずに使っているのですが、インスタンス変数をそのオブジェクトの 代表(?)、あるいはバック(?)にする事が簡単にできるのが便利だと思っています。 #!/usr/local/bin/ruby require "delegate" class A < SimpleDelegator def initialize @hash = {'a'=>'b'} super(@hash) end def help print "help\n" end end test = A.new p test # {'a'=>'b'} test.help # "help\n" を出力 A は Hash の拡張というわけではありませんが、まあ、help 付の Hash みた いな感じになりますよね。 こういう事って delegate.rb を使わずに*簡単に*できましたっけ? (delegate.rb で間に合っているので他の方法を考えた事がないもので...) 実用としては、cgi-lib.rb ではインスタンス変数 inputs へのアクセスを直 接行えるようにしています。 query = CGI.new query['param'] # == query.inputs['param'] telnet.rb ではインスタンス変数 sock をそのようにしていますが、これは sock へのアクセスを簡単にするというより、telnet.rb で定義していないソ ケット系のメソッドを使いたい場合にそれらも利用できるようにする為です。 host = Telnet.new host.waitfor(/match/) host.cmd("command") host.print("string") ... and host has Socket class methods -- 青山 和光 Wakou Aoyama <wakou / fsinet.or.jp>