Автор Тема: Помогите разобрать код...  (Прочитано 5508 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Gekt0r

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите разобрать код...
« : 25 Декабря 2007, 18:31:11 »
Народ, подскажите, копаюсь с чужим кодом... Непонятен блок, как и что делает... Буду признателен, если поможете разобрать....

@sections - массив секций, @subs - подсекций.
$keeper - переменная для выборки из базы по заданным параметрам.
show_in_map() - Определяет, стоит ли флаг для отображения секции или подсекции

@sections = grep { exists $_->{subs} } map {
    my @subs = $keeper->get_sections(
    s => $_->id(),
    status => 1,
    class => \'ThemeSection\'
          );

   @subs = grep { $_->show_in_map() } @subs;

   if (@subs) {
            $_->{subs} = \\@subs;
        $sum += scalar @subs;
        }
    $_;
 } @sections;

Понятно, что по выдранному из кода куску сложно что-то определить... Но тем не менее.. хотя бы последовательность выполнения блока, и какой кусок что делает, подскажите. А то я вконец запутался в этих map и grep и блоках. Понял только, что берется массив @sections, и что-то с ним делается...
« Последнее редактирование: 27 Декабря 2007, 11:25:43 от Gekt0r »

Оффлайн arto

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
Помогите разобрать код...
« Ответ #1 : 25 Декабря 2007, 20:31:57 »
он у вас и работать не будет, скобки не совпадают.

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Помогите разобрать код...
« Ответ #2 : 25 Декабря 2007, 21:11:29 »
Gekt0r
просто возьми и перепиши...
And no religion too...

Оффлайн Gekt0r

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите разобрать код...
« Ответ #3 : 26 Декабря 2007, 12:41:20 »
Цитировать
arto:
он у вас и работать не будет, скобки не совпадают.

код работает.. Со скобками нормально все.. Просто он выполняется немного некорректно, я ищу ошибку, найти не могу


Цитировать
commander:
просто возьми и перепиши...

просто переписать не удастся... Эотт код -лишь часть большого модуля, целиком его переписывать - дело неблагодарное. И я хочу все-таки разобраться во всех этих блоках и операторах.

Народ,можете помочь?

Оффлайн arto

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
Помогите разобрать код...
« Ответ #4 : 26 Декабря 2007, 15:10:45 »
где закрывающая скобка у "$keeper->get_sections" ?

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Помогите разобрать код...
« Ответ #5 : 26 Декабря 2007, 16:01:45 »
Gekt0r

Интересно, а где ты этот фреймворк взял?

А вообще, этот код добавляет в объекты секций массивы объектов дочерних секций по параметру show_in_map()...

Причем довольно криво...

Оффлайн Gekt0r

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите разобрать код...
« Ответ #6 : 27 Декабря 2007, 11:28:27 »
Цитировать
arto:
где закрывающая скобка у "$keeper->get_sections" ?

а, невнимательно скопировал. Она 4 строчками ниже, я туда фигурную скобку поставил по ошибке. Но в самом коде все правильно.

Цитировать
Phoinix:
Gekt0r

Интересно, а где ты этот фреймворк взял?

А вообще, этот код добавляет в объекты секций массивы объектов дочерних секций по параметру show_in_map()...

Причем довольно криво...

это из движка сайта, с которым мне приходится разбираться...
В принципе, что я понял, он берет массив секций, выбирает для каждого список подсекций, фильтрует их по параметру show_in_map, а потом еще выбирает из секций только те, у которых есть подсекции..
А почему криво?

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28