Как Ruby узнает, какой объект OLE перечислим? - PullRequest
3 голосов
/ 29 марта 2012

Я работал с Ruby и WIN32OLE (в частности, с Excel).

Я обнаружил, что все перечисляемые объекты, такие как Range.Columns, автоматически перечисляются в Ruby и могут быть повторены с использованием метода obj.each.

Мне интересно, как это работает? Я понимаю, что если вы хотите сделать что-то перечисляемое, вам нужно include "Enumerable". Но, очевидно, они не могут поместить эту строку в объект OLE. Это просто прямое отображение obj.each метода на for each цикл?

1 Ответ

0 голосов
/ 14 апреля 2012

Здесь интересный набор постов , которые могут ответить на ваш вопрос, а именно:

(...) каждый называется динамически, как и любой другой метод OLE; это не определено до вызовите, действительно ли объект реализует IEnum.

и

Enumerable # метод find конфликтует с методом "find" в Excel Range объект. Это (единственная) причина, по которой WIN32OLE не включает Перечислимый.

В классе WIN32OLE есть метод 'each' (каждый из WIN32OLE # определен) (...)

Надеюсь, это поможет!

...