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 类具有“每个”方法(定义了 WIN32OLE#each)(...)

希望这可以帮助!

于 2012-04-14T15:07:36.387 回答