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... ]