![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
achmed |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 12.4.2004 Репутация: нет Всего: нет |
Здравствуйте!
Допустим в мою функцию передается хэш произвольной вложенности (например это элементы меню,которые нужно отобразить на веб-странице), мне нужно пройтись по всем элементам, при этом нужно различать на текущем шаге обхода что соответсвует ключу - скаляр или очередной хеш. Вопрос как лучше поступить c точки зрения стиля, определять наличие хэша при помощи ref, или передавать информацию о структуре самом хэше (например с ключами -value,-childs). т.е в первом случае fun printmenu { my $menu = shift; foreach $i (keys %$menu) { if(ref($i) eq HASH) { ........ } else { ....... } } } .. printmenu({"гостевая страница"=> "/quest/","новости" => {"лента"=>"/news/line/","подписка"=>"/news/sub/"}}); или fun printmenu { my $menu = shift; foreach $i (@$menu) { if(defined $i->{-childs}) { ........ } else { ....... } } } ..... printmenu([{-name=>"гостевая страница",-val=> "/quest/"}, {-name=>"новости",-childs => [{-name=>"лента",-val=>"/news/line/}",{-name=>"подписка",-val=>"/news/sub/"}]}]); |
|||
|
||||
HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: нет Всего: 42 |
ИМХО, в данном случае рекурсивный алгоритм с проверкой на хеш оптимален.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |