3

Ruby と WIN32OLE (具体的には Excel) を使用していました。

Range.Columns などの列挙可能なオブジェクトはすべて Ruby で自動的に列挙可能であり、obj.each メソッドを使用して反復処理できることがわかりました。

私はそれがどのように機能するのだろうか?何かを列挙可能にしたい場合は、include "Enumerable". しかし、明らかに、その行を OLE オブジェクトに入れることはできません。obj.eachメソッドをfor eachループに直接マッピングするだけですか?

4

1 に答える 1

0

具体的には、あなたの質問に答える興味深い一連の投稿があります。

(...) それぞれが他の OLE メソッドと同じように動的に呼び出されます。オブジェクトが実際に IEnum を実装しているかどうかは、呼び出しの前には決定されません。

と:

Enumerable#find メソッドは、Excel Range オブジェクトの 'find' メソッドと衝突します。これが、WIN32OLE に Enumerable が含まれていない (唯一の) 理由です。

WIN32OLE クラスには「each」メソッドがあります (WIN32OLE#each が定義されています) (...)

お役に立てれば!

于 2012-04-14T15:07:36.387 に答える