Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby如何知道哪个OLE对象是可枚举的?_Ruby_Enumerable_Win32ole - Fatal编程技术网

Ruby如何知道哪个OLE对象是可枚举的?

Ruby如何知道哪个OLE对象是可枚举的?,ruby,enumerable,win32ole,Ruby,Enumerable,Win32ole,我使用的是Ruby和WIN32OLE(具体来说就是Excel) 我发现所有这些可枚举对象,比如Range.Columns,在Ruby中都是可自动枚举的,并且可以使用obj.each方法进行迭代 我想知道它是怎么工作的?我明白,如果你想让某些东西可枚举,你必须包括“可枚举”。但是很显然,他们不能把这一行放在OLE对象中。它是否只是将每个循环的每个方法直接映射到 (…)每一个都称为 与任何其他OLE方法一样动态;这还没有确定之前的决定 调用对象是否实际实现IEnum 以及: 可枚举#查找方法与Exc

我使用的是Ruby和WIN32OLE(具体来说就是Excel)

我发现所有这些可枚举对象,比如Range.Columns,在Ruby中都是可自动枚举的,并且可以使用obj.each方法进行迭代

我想知道它是怎么工作的?我明白,如果你想让某些东西可枚举,你必须
包括“可枚举”
。但是很显然,他们不能把这一行放在OLE对象中。它是否只是将每个循环的每个方法直接映射到

(…)每一个都称为 与任何其他OLE方法一样动态;这还没有确定之前的决定 调用对象是否实际实现IEnum

以及:

可枚举#查找方法与Excel范围的“查找”方法冲突 对象这是WIN32OLE不包括的(唯一)原因 可枚举的

WIN32OLE类具有“each”方法(WIN32OLE#each已定义)(…)


希望这有帮助

检查源代码。它们可能从包含可枚举的基本对象继承。您可能希望尝试
obj.class.祖先
查看对象是什么类,以及它有什么祖先。集合的
的祖先是:[WIN32OLE,object,Kernel,BasicObject]。这与
Excel.Application
相同。但是
是可枚举的,而
Excel是不可枚举的。应用程序
不能。在WIN32OLE对象上调用
.to_enum
来访问所有
可枚举的
商品,而不冒冲突风险,怎么样?