Re: [ruby][sequel] Объявление одного класса в нескольких фай
От: Гест Украина https://zverok.github.io
Дата: 12.09.09 13:27
Оценка: 2 (1)
Здравствуйте, DemAS, Вы писали:


DAS> Потихоньку разбираюсь в Sequel и обнаружил, что в его исходных кодах

DAS>несколько классов объявляются сразу в нескольких модулях. Например:

DAS> — sequel/database.rb — Sequel::Database .......

DAS> — sequel/database/scheme_methods.rb — Sequel::Database ......

DAS> В Programming Ruby ничего не нашел про эту возможность.


DAS> Собственно, я правильно понимаю, что это определение одного и того же

DAS>класса 'размазано' по нескольким классам? Зачем так сделано?

Возможность называется «открытые классы» (несколько определений класса с одинаковым именем дают один и тот же класс). Для «толстых» классов (с кучей возможностей) — это один из способов структурировать код (часть класса в одном файле, часть в другом). Более того, разные файлы можно подргужать в зависимости от внешних условий, из-за чего определение класса будет изменяться.
[ruby][sequel] Объявление одного класса в нескольких файлах
От: DemAS http://demas.me
Дата: 12.09.09 12:56
Оценка:
Потихоньку разбираюсь в Sequel и обнаружил, что в его исходных кодах
несколько классов объявляются сразу в нескольких модулях. Например:

— sequel/database.rb — Sequel::Database .......
— sequel/database/scheme_methods.rb — Sequel::Database ......

В Programming Ruby ничего не нашел про эту возможность.

Собственно, я правильно понимаю, что это определение одного и того же
класса 'размазано' по нескольким классам? Зачем так сделано?
Posted via RSDN NNTP Server 2.1 beta
Re: [ruby][sequel] Объявление одного класса в нескольких фай
От: jartur Россия http://jartur.l-square.net;
Дата: 13.09.09 11:52
Оценка:
Здравствуйте, DemAS, Вы писали:

DAS> Собственно, я правильно понимаю, что это определение одного и того же

DAS>класса 'размазано' по нескольким классам? Зачем так сделано?

В руби классы открытые. Можно доопределять их когда угодно. Например, можно таким образом добавить метод к классу string в некой либе. Это называется monkey patching и не всем это нравится.

А в случае с Sequel, скорее всего просто разные методы сгруппированы в разных файлах согласно своему назначения. Не знаю.
蝸牛そろそろ登れ富士の山
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.