Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
moko 10.10 01:09 / 10.10 03:11
Весь новый функционал покрыт тестами и доступен в ночных сборках, в том числе и под Windows.$a[v1;v2;v3...] Или $a[^array::create[$array_or_hash]] Или $a[^array::sql{select query}] Или $a[^json:parse[["v1","v2",3]]]Обращение к элементу и присвоение значения элементу массива аналогично хешу с числовыми индексами:
$a.1 и $a.1[value]Если задать в массиве все элементы (от нулевого до последнего), получится обычный массив. Но можно инициализировать только часть элементов, тогда получится разряженный массив (c "дырками"). Этой возможностью можно не пользоваться, но она делает массив полностью совместимым с хешом с числовыми индексами. Массив можно передавать параметром в методы хеша и у массива есть большинство методов хеша, которые работают аналогично:
^a.foreach[i;v]{code} ^a.add[$h] ^a.count[] или ^a.count[all], если нужно посчитать и дырки ^a.keys[] ^a.delete(i) - на месте элемента получается дырка ^a.contains(i) ^a.reverse[] ^a.sort[i;v]($v)Методы отбора части элементов. Часть методов похожи на методы строки, другая аналогична методам хеша:
^a.left(n) ^a.right(n) ^a.mid(n;m) ^a.select[i;v]($v>2) ^a.at(n) - n не индекс, а порядковый номер ("дырки" пропускаются), еще может быть строкой first или lastКроме того, у массива есть методы похожие на методы таблицы:
^a.join[$b] - добавляет элементы переданного массива или хеша в конец массива (add перезаписывает элементы с одинаковыми индексами) ^a.append[e1;e2;...] - добавляет элементы в конец массива, сколько параметров, столько элементов и будет добавлено. ^a.insert(1)[e1;e2;...] - вставляет элементы в указанную позицию массива.И свои методы:
^a.remove(1) - удаляет элемент на указанной позиции со сдвигом последующих элементов ^a.for[i;v]{code} - итерируется и по не инициализированным элементамМетоды некоторых классов теперь могут возвращать массив. Сейчас это:
^table.cells[] - возвращает массив всех или ^table.cells(n) первых n ячеек текущего ряда таблицы ^строка.split[,][a] - возвращает массив при указании опции поиска 'a'И ремарка касательно ^array::sql{}. По умолчанию результатом запроса считается обычный массив, но если передать опцию $.sparse(true), в первой колонке должен возвращаться индекс и поведение метода становится очень похожим на ^hash::sql{}. Кроме того, ^array::sql{} поддерживает множественные запросы с разными колонками в результате, например $a[^array::sql{select name from person^; select nick, food from pets}]