| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > вложенные хэши |
| Автор: achmed 15.4.2004, 13:36 |
| Здравствуйте! Допустим в мою функцию передается хэш произвольной вложенности (например это элементы меню,которые нужно отобразить на веб-странице), мне нужно пройтись по всем элементам, при этом нужно различать на текущем шаге обхода что соответсвует ключу - скаляр или очередной хеш. Вопрос как лучше поступить 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 18.4.2004, 19:04 |
| ИМХО, в данном случае рекурсивный алгоритм с проверкой на хеш оптимален. |