Ruby如何知道哪个OLE对象是可枚举的?
我使用的是Ruby和WIN32OLE(具体来说就是Excel) 我发现所有这些可枚举对象,比如Range.Columns,在Ruby中都是可自动枚举的,并且可以使用obj.each方法进行迭代 我想知道它是怎么工作的?我明白,如果你想让某些东西可枚举,你必须Ruby如何知道哪个OLE对象是可枚举的?,ruby,enumerable,win32ole,Ruby,Enumerable,Win32ole,我使用的是Ruby和WIN32OLE(具体来说就是Excel) 我发现所有这些可枚举对象,比如Range.Columns,在Ruby中都是可自动枚举的,并且可以使用obj.each方法进行迭代 我想知道它是怎么工作的?我明白,如果你想让某些东西可枚举,你必须包括“可枚举”。但是很显然,他们不能把这一行放在OLE对象中。它是否只是将每个循环的每个方法直接映射到 (…)每一个都称为 与任何其他OLE方法一样动态;这还没有确定之前的决定 调用对象是否实际实现IEnum 以及: 可枚举#查找方法与Exc
包括“可枚举”
。但是很显然,他们不能把这一行放在OLE对象中。它是否只是将每个循环的每个方法直接映射到
(…)每一个都称为
与任何其他OLE方法一样动态;这还没有确定之前的决定
调用对象是否实际实现IEnum
以及:
可枚举#查找方法与Excel范围的“查找”方法冲突
对象这是WIN32OLE不包括的(唯一)原因
可枚举的
WIN32OLE类具有“each”方法(WIN32OLE#each已定义)(…)
希望这有帮助 检查源代码。它们可能从包含可枚举的基本对象继承。您可能希望尝试obj.class.祖先
查看对象是什么类,以及它有什么祖先。集合的列
的祖先是:[WIN32OLE,object,Kernel,BasicObject]。这与Excel.Application
相同。但是列
是可枚举的,而Excel是不可枚举的。应用程序
不能。在WIN32OLE对象上调用.to_enum
来访问所有可枚举的
商品,而不冒冲突风险,怎么样?