Ruby와 WIN32OLE (특히 Excel)과 함께 작업하고있었습니다.Ruby는 어떤 OLE 개체를 열거 할 수 있는지 어떻게 알 수 있습니까?
Range.Columns와 같은 모든 열거 가능한 객체가 자동으로 루비에서 열거 가능하며 obj.each 메소드를 사용하여 반복 될 수 있음을 발견했습니다.
어떻게 작동하는지 궁금합니다. 열거할만한 것을 만들고 싶다면 include "Enumerable"
해야한다는 것을 이해합니다. 하지만 분명히 그들은 OLE 객체에 해당 라인을 넣을 수 없습니다. 그것은 단지 obj.each
메서드를 for each
루프에 직접 맵핑합니까?
소스 코드를 확인하십시오. 그들은 아마도 Enumerable을 포함하는 기본 객체를 상속합니다. – theglauber
'obj.class.ancestors'를 사용해 객체가 어떤 클래스인지 그리고 그 조상이 무엇인지 확인할 수 있습니다. –
'Columns' 콜렉션의 조상은 [WIN32OLE, Object, Kernel, BasicObject]입니다. Excel.Application에서도 마찬가지입니다. 그러나 'Excel.Application'은 열 수 없지만'열 '은 열거 할 수 있습니다. – texasbruce