[#31787] MIME decoding — Tietew <tietew@...>

Tietew です。

24 messages 2001/10/08

[#31866] 先祖がえり — "T.Shirakawa" <niegh@...>

はじめまして つい最近、MLに登録した白川です。

20 messages 2001/10/14
[#31867] Re: 先祖がえり — Koji Arai <JCA02266@...> 2001/10/14

新井です。

[#31889] Ruby Conference — Minero Aoki <aamine@...>

あおきです。

31 messages 2001/10/16
[#31905] Re: Ruby Conference — matz@... (Yukihiro Matsumoto) 2001/10/17

まつもと ゆきひろです

[#31923] Re: Ruby Conference — TAKAHASHI Masayoshi <maki@...> 2001/10/17

高橋征義です。

[#31932] しぶらぐ — "KANEMITSU Masao" <masao-k@...> 2001/10/18

http://www.ne.jp/asahi/masao-k/home/newpage1.htm

[#31906] 数値の配列の一部を文字列にして、多重代入したい — みかみまさと <kofu@...>

こんにちは。みかみにございます。

9 messages 2001/10/17

[#32016] Re: コメント削除スクリプト — "Tatsuaki Nagai" <Tatsuaki_Nagai@...>

こんにちは。永井です。

15 messages 2001/10/24
[#32018] Re: コメント削除スクリプト — TASHIRO Katsuya <tashiro_katsuya@...> 2001/10/24

田代と申します.

[#32123] dRuby の DRbUndumped#_dump は? — FUJIMOTO Hisakuni <hisa@...>

こんにちは、藤本です。

21 messages 2001/10/30
[#32124] Re: dRuby の DRbUndumped#_dump は? — m_seki@... 2001/10/30

[#32126] Re: dRuby の DRbUndumped#_dump は? — shudo@... 2001/10/31

咳さん wrote:

[#32145] Test::Unit — MUTOH@...

むとうです。

20 messages 2001/10/31

[ruby-list:31898] Re: 先祖がえり

From: Minero Aoki <aamine@...>
Date: 2001-10-16 15:24:36 UTC
List: ruby-list #31898
あおきです。

  In mail "[ruby-list:31895] Re: 先祖がえり"
    nobu.nakada@nifty.ne.jp wrote:

> なかだです。

> >   class MyArray < Array
> >     wrapper_def:&, |, *, +, -, <<, [], assoc, at, clear, などなど
> >     def toCSV()
> >     end
> >   end
> > とかできると楽しいかな...
> 
>  これ、ラッパーなんですか? どちらかというとdelegate.rbや
> forwardable.rbみたいのを指すような気がしますが。

Array 継承する必要ないですよね。あと「:」の付きかたを逆に
とってるんだろうなあ。あれは実は引数の頭に付いてるんです。

なんてのはともあれ、

    require 'forwardable'

    class MyArray
      extend Forwardable

      def initialize
        @array = []
      end

      def_delegators :@array, *%w(  & | * + - << [] assoc at clear  )

      def split_csv
	....
      end
    end

とすればできます。ああ、def_delegators の行がわかりにくそう。

    ivar_name = '@array'.intern
    methods = [ '&', '|', '*', '+', '-', '<<', '[]', 'assoc', 'at', 'clear' ]
    def_delegators( ivar_name, *methods )

と書くのと同じ意味です。最初は不思議でしょうが、ポイントは

  *  class 文の中でも普通に実行する文を書ける
     (attr も include も def_delegators も普通のメソッド呼び出し)
  *  :name とか :+ :some_method のようなものはシンボルオブジェクト。
     ':' + 識別子で表す。
  *  %w( ... ) は文字列の配列の省略形

てなところでしょうか。リファレンスマニュアル検索してみてください。
-------------------------------------------------------------------
青木峰郎

In This Thread