Почему to _a и to _ary ведут себя по-разному в подклассах Array?

Если у вас есть подкласс X массива, то выполнение X#to_aвозвращает объект массива, а выполнение X#to_aryвозвращает объект x.

Хотя я понимаю, что to_aозначает «Я могу быть преобразован в массив», а to_aryозначает «Я веду себя как массив», я не понимаю, почему первый реализует изменение класса, а второй нет.

Кроме того, не является ли возврат подкласса Array достаточным для to_aсогласно принципу подстановки Лискова?

5
задан Andrew Grimm 17 April 2012 в 02:05
поделиться