Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Артём 06.02.2003 18:34 / 06.02.2003 18:38
все супер, только если $quant > ^source_table.count[] то происходит ошибка зацыкливанияendless loop detected while g:/www/html/class/catalog.p(948) exception.type=parser.runtimeя сделал так
@revolver[source_table;quant][added;rand_code;count] # $count засовываю в переменную, чтобы не доставать # в процессе выполнения $rand_code каждый раз ее из $source_table $count(^source_table.count[]) ^if($quant){ ^if($quant > $count){ $quant($count) } }{ $quant(1) } $result[^source_table.select(0)] ## хеш, куда пишем то, что уже добавили в результат. ## нужно, чтобы не было дублирования $added[^hash::create[]] ## код, который вычисляет нам в цикле случайную строку $rand_code{^eval(^math:random($count)+1)} ^while($quant > ^result.count[]){ $rand($rand_code) ^while($added.[$rand]){$rand($rand_code)} ^result.join[^source_table.select(^source_table.line[] == $rand))] ^source_table.offset[set](0) ^added.add[$.$rand(1)] } #end @revolver[]а по первому варианту, насчет того что хэш не гарантирует порядка: