parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Для того, чтобы не было таких проблем надо писать код без сайд-эффектов...

Sumo 01.01.2014 19:40 / 01.01.2014 19:45

@main[]
  $h[^for[i](1;100){$.[$i][^math:random(1000)]}]
  $h[^hashUtils:select[$h;k;v]($k % 2 && $v < 450)]
  ^h.foreach[k;v]{$k => $v}[^#0A]

@CLASS
hashUtils

@select[aHash;aKeyVar;aValueVar;aConditions][locals]
  $result[^hash::create[]]
  ^aHash.foreach[k;v]{
    $caller.[$aKeyVar][$k]
    $caller.[$aValueVar][$v]
    ^if($aConditions){
      $result.[$k][$v]
    }
  }
Это классический пример итератора на Парсере. Аналогичная схема применима в подавляющем большинстве подобных задач.

p.s. В идеальной ситуации функция должна работать только с теми данными, которые ей явно передали. Хранить в статических классах какие-либо данные очень плохая практика. :)