[前][次][番号順一覧][スレッド一覧]

learn-ruby-in-kansai:136

From: Hiroshi Takagi <gollum@h...>
Date: Sun, 26 Dec 2004 19:39:37 +0900
Subject: [learn-ruby-in-kansai:136] Re: WIN32OLEについての質問/Object#....

高木@イブは仕事がどっちゃりはいり、対応で worn out しました :-(

25日も寝込んでしまい、奥さんをルミナリエに連れていけず...


On Sat, 25 Dec 2004 10:24:15 +0900
tomoya <tomoya@c...> wrote:

(snip)

> 次のような方法はどうでしょうか?
> 
> # 僕のやり方で Worksheet モジュールを使っている点はご容赦を。
> 
> module Worksheet
>   def [] y,x
>     cell = self.Cells.Item(y,x)
>     v = cell.Value
>     def v.cell= cell
>       @cell = cell
>     end
>     v.cell = cell
>     def v.method_missing(name,*args)
>       @cell.__send__(name,*args)
>     end
>     return v
>   end
> end
> 
> ...
> 
> openExcelWorkbook("sample2.xls") do |book|
>   sheet = book.Worksheets.Item(2)
>   sheet.extend Worksheet
> 
>   puts sheet[2,2].Font.Size
> end
> 
> ポイントは method_missing を使うことで、cell にdelegate するようにしてい
> る点です。

Object#extend
Object#method_missing(name, *args)
Object#__send__(name, *args)

の使い方が美しい〜!

delegate デザインパターンってこういうかたちになるんですねぇ〜。

頭が function prototype, procedure 化しているオヤジには、
デザインパターンの話はわけわかりませんでしたが、
この例にはとても興奮します。

(snip)

> > 以上 気が付いた事を書きました。 今回の記事には、知らないことがいろいろとあ 
> > り勉強になりました。
> 参考にしますので、どのテクニックが知らなかったのかとか、これは使える!と
> 思ったテクニックにどんなものがあったのかも教えて欲しいです。

Win32OLE そのものより、
この method_missing による delegation が最高ですね、
これは使える(笑

> 褒めてもらえると、なんかやる気がでてきます(笑)

どんどんほめちゃいます。

まつもとさんは
「驚き最小化の法則」をRubyのコンセプトにされているそうですが、
こういう知的興奮を感じるコードに出会った時の「驚き」を
わたしはだいじにしたいほうですね^^
-- 
Hiroshi Takagi <gollum@h...>



--
ML: learn-ruby-in-kansai@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

       119 2004-12-22 05:19 [gollum@h...         ] 第1回 日本Ruby の会関西勉強会開催の案内 
       120 2004-12-23 00:08 ┣[tomoya@c...         ]                                       
       123 2004-12-23 05:17 ┃┣[gollum@h...         ]                                     
       124 2004-12-23 07:46 ┃┃┣[xml@t...            ]                                   
       129 2004-12-25 02:24 ┃┃┗[tomoya@c...         ]                                   
       126 2004-12-24 12:47 ┃┗[sakai-n@m...        ] WIN32OLEについての質問              
       128 2004-12-25 02:24 ┃ ┗[tomoya@c...         ]                                   
       134 2004-12-25 16:43 ┃  ┣[xml@t...            ]                                 
->     136 2004-12-26 11:39 ┃  ┗[gollum@h...         ] Re: WIN32OLEについての質問/Object#....
       122 2004-12-23 05:02 ┣[zn@m...             ]                                       
       125 2004-12-23 08:39 ┣[sakai-n@m...        ]                                       
       130 2004-12-25 07:12 ┣[mash@a...           ]                                       
       133 2004-12-25 14:59 ┃┣[zn@m...             ]                                     
       138 2004-12-26 12:57 ┃┃┗[tomoya@c...         ]                                   
       140 2004-12-27 03:41 ┃┗[mash@a...           ] Cygwin 環境から MSWIN32 版 Ruby を使う際のパス変換について
       143 2004-12-29 13:20 ┗[babie7a0@y...       ]