![]() |
Модераторы: korob2001, ginnie Страницы: (10) Все « Первая ... 4 5 [6] 7 8 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]() ![]() ![]() |
|
everyone |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 24.3.2004 Репутация: 1 Всего: 4 |
в этом вопросе я теоретик, и давно не пишу на Perl. Но судят по той странице
смысл tie в том, что с помощью стандартных методов EXISTS, FIRSTKEY, NEXTKEY... мы создаём расширенный хэш, который ведёт себя так, как мы его запрограммируем. Хэш очень удобная и интуитивно понятная структура. Вы работаете с ним, а обращения к нему латентно делают сколько угодно сложные действия. Вот, по-моему, и всё колдовство. При разработке это, возможно, неудобно и громоздко, но при многократном использовании алгоритма можно сэкономить много времени в написании кода и понимании детального механизма того, что мы делаем(оно отпадает, ведь вы просто работаете с хэшем, а это урок номер один, или два... или, может быть, три). Реализация нам не важна, так что это похоже на разновидность инкапсуляции преимущества всегда относительны --------------------
Что написал, то написал (Пилат) |
|||
|
||||
mvsgt |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 27.3.2009 Репутация: 1 Всего: 1 |
||||
|
||||
DaemonSuw |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 11.3.2008 Репутация: 3 Всего: 3 |
mvsgt, да вот мне интересно кто нибудь его использует? даже топик создал http://forum.vingrad.ru/forum/topic-259920.html ... 3 человека насчиталось =) кто юзает
Это сообщение отредактировал(а) DaemonSuw - 3.6.2009, 16:11 |
|||
|
||||
gcc |
|
||||||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
гугло бот вот выдал не много
http://simon-cozens.org/programmer/articles/rubyisms.pod это если есть Wibble::Simple:: do_it и нужно перейти в Wibble:: do_it ?
http://www.oreillynet.com/onlamp/blog/2006...ing_day_19.html
http://search.cpan.org/~chromatic/SUPER-1.16/lib/SUPER.pm
а по последней ссыле что это за super, что-то не понятно, то же самое? Это сообщение отредактировал(а) gcc - 3.6.2009, 16:45 |
||||||
|
|||||||
mvsgt |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 27.3.2009 Репутация: 1 Всего: 1 |
gcc, непонятно что Вы написали про гугл.
|
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
гугл не много нашел... мало информации про это
|
|||
|
||||
klem4 |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 27.7.2008 Репутация: 2 Всего: 2 |
В дурдоме можно все:
При желании можно реализовать метод, вызывающий определенные метод у i-го родительского класса вверх по дереву. |
||||||
|
|||||||
mvsgt |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 27.3.2009 Репутация: 1 Всего: 1 |
Гугл не нашёл, потому что в перле (в чистом) в принципе нет классов, а значит и суперклассов нет. Наследования нет -> значит не может быть и родительского класса. use Moose и похожие модули, они эмулируют классы. Добавлено через 1 минуту и 48 секунд klem4, в перле нет классов и нет наследования ![]() |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
mvsgt, если в Perl нет классов, почему я их могу использовать? Если нет наследования, почему я могу вызвать родительский метод?
Т.е. в других языках наследование как-то принципиально иначе реализовано? -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
mvsgt |
|
||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 27.3.2009 Репутация: 1 Всего: 1 |
Родительских методов тоже нет! Есть правила поиска методов, но назвать какой-либо класс родительским нельзя, разве что при соблюдении каких-то соглашений.
Конечно иначе. Особенно если учесть, что в Перле наследование вообще никак не реализовано. НИКАК! Вы, например, можете взять да и поменять "наследование" на лету. Попробуйте такой фокус провернуть в Java или С++.
Это сообщение отредактировал(а) mvsgt - 3.6.2009, 19:10 |
||||||
|
|||||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
mvsgt, почему $self->SUPER::method() не вызов родительского метода?
Зачем смешивать механизмы и их реализацию, тем более указывать как недостаток возможность изменять работу механизмов? Не хочу ввязываться в спор. Если для Вас в Perl нет ООП, классов, наследования - значит так оно и есть. К счастью, многие успешно пользуются этими, отсутствующими в Perl, элементами. Да, пусть они работают не так, как в других языках, но это не повод ими пренебрегать. -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
С терминологической точки зрения mvsgt пожалуй все-таки прав.
В языках типа С++ или Java такие вещи реализованы на уровне примитивов, а в Perl чистая эмуляция. В голову сразу приходит такая параллель для сравнения: Moose, там вроде как появляется система контроля типов данных. Но нельзя ведь сказать, что перл теперь перестал быть нетипизированным языком. При желании этот контроль можно обойти.
А вот здесь несогласен. MRO - общее понятие для всех ООП языков, оно никак не связано с тем, можно ли называть класс родительским или нет. -------------------- Died at Life.pl line 21 |
|||
|
||||
mvsgt |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 27.3.2009 Репутация: 1 Всего: 1 |
Ну разумеется не повод. Просто ими пользуются не так, как в других языках. Например, SUPER используется в <10% модулей CPAN , о чём-то это говорит. OOP в перле - и больше, и меньше чем в других языках, это скорее не законченная реализация, а конструктор, и это надо понимать. |
|||
|
||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Но, кстати, с помощью эмуляции ООП в Perl можно добиться практически всего, что могут языки типа С++ и Java. Так что может и не так важно ;)
-------------------- Died at Life.pl line 21 |
|||
|
||||
mvsgt |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 27.3.2009 Репутация: 1 Всего: 1 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |