我正在使用Ruby和WIN32OLE(特别是Excel)。
我发现所有那些可枚举的对象,比如Range.Columns,都可以在Ruby中自动枚举,并且可以使用obj.each方法进行迭代。
我想知道它是如何工作的?我知道如果你想要制作一些可枚举的东西,你必须include "Enumerable"
。但显然他们无法将该行放在OLE对象中。它只是直接将obj.each
方法映射到for each
循环吗?
答案 0 :(得分:0)
有an interesting set of posts here可能会回答您的问题,具体而言:
(...)每个被称为 动态的任何其他OLE方法;它没有在之前确定 调用该对象是否实际实现了IEnum。
和
Enumerable #find方法冲突了Excel Range的'find'方法 宾语。这是WIN32OLE不包含的(唯一)原因 枚举的。
WIN32OLE类有'each'方法(每个都定义了WIN32OLE#)(...)
希望这有帮助!