Перейти к содержанию
Главное меню
Главное меню
переместить в боковую панель
скрыть
Навигация
Заглавная страница
Указатели
Свежие правки
Случайная страница
Справка по MediaWiki
Народные Сказки
Поиск
Найти
Создать учётную запись
Войти
Персональные инструменты
Создать учётную запись
Войти
Страницы для неавторизованных редакторов
узнать больше
Вклад
Обсуждение
Редактирование:
Модуль:TableTools/doc
Модуль
Обсуждение
русский
Читать
Править код
История
Инструменты
Инструменты
переместить в боковую панель
скрыть
Действия
Читать
Править код
История
Общие
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
{{Docpage}} {{Рейтинг модуля|protected}} Данный модуль предоставляет функции для работы с [[Lua#Таблицы|таблицами Lua]]. В общем случае, его функции не должны вызываться напрямую через #invoke, а только использоваться в других модулях. == Подключение == Для использования функционала модуль сперва следует подключить. {{LuaCode| local TableTools {{=}} require('Module:TableTools') }} == isPositiveInteger == {{LuaCode| TableTools.isPositiveInteger(value) }} Возвращает {{LuaTrue}} если {{Codevar|value}} — положительное целое число и {{LuaFalse}} иначе. Хотя эта функция и не относится напрямую к таблицам, она нужна для определения, является ли ключ ключом массива либо же хэш-таблицы. == isNan == {{LuaCode| TableTools.isNan(value) }} Возвращает {{LuaTrue}} если {{Codevar|value}} представляет собой [[NaN]] и {{LuaFalse}} иначе. Хотя эта функция и не относится напрямую к таблицам, она нужна для определения, может ли значение быть ключом таблицы. == shallowClone == {{LuaCode| TableTools.shallowClone(t) }} Возвращает клон таблицы. Возвращаемое значение представляет собой новую таблицу, но все подтаблицы и функции являются разделяемыми. Метаметоды переносятся, но возвращаемая таблица не будет включать [[Lua#Метатаблицы|метатаблицу]]. Если вы хотите скопировать подтаблицы и метатаблицу, используйте {{Scribunto reference|mw.clone}}. Если вы хотите скопировать подтаблицы, но не переносить метатаблицы, используйте {{Code|[[#deepCopy|deepCopy]]}} с параметром {{Code|noMetatable}}. == removeDuplicates == {{LuaCode| TableTools.removeDuplicates(t) }} Удаляет из массива значения-дубликаты. Функция предназначена для работы только со стандартными массивами: обрабатываются только ключи-положительные целые числа, а все значения после первого {{LuaCode|nil|inline=1}} игнорируются. (Для массивов, содержащих {{LuaCode|nil|inline=1}}, используйте {{Code|[[#compressSparseArray|compressSparseArray]]}} перед этой функцией.) Функция старается сохранить порядок следования элементов — оставляется первое вхождение значения, а все последующие удаляются. Например, для таблицы {{LuaCode|{5, 4, 4, 3, 4, 2, 2, 1}|inline=1}} {{Code|removeDuplicates}} вернёт {{LuaCode|{5, 4, 3, 2, 1}|inline=1}}. == numKeys == {{LuaCode| TableTools.numKeys(t) }} Принимает на вход таблицу {{Codevar|t}} и возвращает массив из положительных целых чисел, которые являются ключами таблицы для данных с непустым значением, отсортированный в порядке возрастания. Например, для таблицы {{LuaCode|1={'foo', nil, 'bar', 'baz', a = 'b'}|inline=1}} вызов {{Code|numKeys}} вернёт {{LuaCode|{1, 3, 4}|inline=1}}. == affixNums == {{LuaCode| TableTools.affixNums(t, prefix, suffix) }} Принимает на вход таблицу {{Codevar|t}} и возвращает массив из положительных целых чисел, которым соответствуют ключи таблицы с опциональным префиксом {{Codevar|prefix}} и опциональным суффиксом {{Codevar|suffix}}. Например, для таблицы {{LuaCode|1={a1 = 'foo', a3 = 'bar', a6 = 'baz'}|inline=1}} и префикса {{Codevar|a}} вызов {{Code|affixNums}} вернёт {{LuaCode|{1, 3, 6}|inline=1}}. Все символы в {{Codevar|prefix}} и {{Codevar|suffix}} интерпретируются буквально. == numData == {{LuaCode| TableTools.numData(t, compress) }} Дла таблицы с ключами вида {{Codevar|foo1}}, {{Codevar|bar1}}, {{Codevar|foo2}} и {{Codevar|baz2}} возвращает таблицы с подтаблицами в формате {{LuaCode|1={ [1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'} }|inline=1}}. Ключи, не заканчивающиеся числом размещаются в подтаблице {{Codevar|other}}. Опция {{Codevar|compress}} позволяет использовать таблицу для цикла с помощью {{Code|ipairs}}. == compressSparseArray == {{LuaCode| TableTools.compressSparseArray(t) }} Принимает на вход массив {{Codevar|t}} с пустыми значениями ({{LuaCode|nil|inline=1}}) и убирает их, сохраняя порядок, чтобы массив мог использоваться в {{Code|ipairs}}. Нечисловые ключи удаляются. Например, для таблицы {{LuaCode|1={1, nil, foo = 'bar', 3, 2}|inline=1}} вызов {{Code|compressSparseArray}} вернёт {{LuaCode|{1, 3, 2}|inline=1}}. == sparseIpairs == {{LuaCode| TableTools.sparseIpairs(t) }} Итератор для перебора элементов разреженного массива {{Codevar|t}}. Аналогичен {{Scribunto reference|ipairs}}, но продолжится до достижения ключа с максимальным числовым значением, в отличе от обычного {{Code|ipairs}}, останавливающегося на первом {{LuaCode|nil|inline=1}}. Нечисловые ключи игнорируются. {{Code|sparseIpairs}} может использоваться для цикла {{Code|for}}. {{LuaCode| for i, v in TableTools.sparseIpairs(t) do -- Code block end }} Обратите внимание, что функция {{Code|sparseIpairs}} основана на {{Scribunto reference|pairs}}. Хота в итератор для цикла могут передаваться не все ключи, читаться будут всё равно все. == size == {{LuaCode| TableTools.size(t) }} Возращает размер таблицы пар ключ-значение. Например, для таблицы {{LuaCode|1={foo = 'foo', bar = 'bar'}|inline=1}} вызов {{Code|size}} вернёт {{Code|2}}. Функция также работает и для массивов, но для них следует использовать встроенный оператор языка {{Code|#}}. Обратите внимание, что в своей работе функция использует функцию {{Scribunto reference|pairs}} для итерирования по всем ключам. == keysToList == {{LuaCode| TableTools.keysToList(t, keySort) }} Возвращает список ключей таблицы, используя либо сортировку по умолчанию, либо произвольную функцию {{Codevar|keySort}}, соотвествующую правилам для функции {{Code|comp}} для {{scribunto reference|table.sort}}. == sortedPairs == {{LuaCode| TableTools.sortedPairs(t, keySort) }} Итератор, перебирающий ключи таблицы в порядке, возвращаемом функцией {{Code|keysToList}}. Если в таблице используются только числовые ключи, {{Code|sparseIpairs}} будет эффективнее. == isArray == {{LuaCode| TableTools.isArray(t) }} Возвращает {{LuaTrue}}, если все ключи таблицы — положительные числа, начиная с {{Code|1}}. == listToSet == {{LuaCode| TableTools.listToSet(arr) }} Создаёт множество на основе значений числовых ключей таблицы {{Codevar|arr}}. Получение значения множества для значений {{Codevar|arr}} вернёт {{LuaTrue}}. {{LuaCode|1= local set = TableTools.listToSet { "a", "b", "c" } assert(set["a"] == true) }} == invert == {{LuaCode| TableTools.invert(t) }} Транспонирует ключи и значения массива. Например, {{Code|invert{ "a", "b", "c" }}} вернёт {{Code|1={ a = 1, b = 2, c = 3 }}}. Работает только для числовых ключей. == deepCopy == {{LuaCode| TableTools.deepCopy(orig, noMetatable, alreadySeen) }} Создаёт копию таблицы {{Codevar|orig}}. Как и при использовании {{Code|mw.clone}} все значения, не являющиеся функциями, дублируются и идентичность таблиц сохраняется. Если {{Codevar|noMetatable}} выставляется в {{LuaTrue}}, метатаблица (если имеется) не копируется. Может копировать таблицы, загруженные с помощью {{Code|mw.loadData}}. В отличие от этой функции {{Code|mw.clone}} не работает с таблицами, загруженными с помощью {{Code|mw.loadData}}, и не имеет возможности <em>не</em> копировать метатаблицы. == sparseConcat == {{LuaCode| TableTools.sparseConcat(t, sep) }} Производит конкатенацию всех значений для числовых ключей с сохранением их порядка. == length == {{LuaCode| TableTools.length(t) }} Возвращает длину массива или псевдомассива с ключами вида {{Code|data1}}, {{Code|data2}} и т.д. Использует алгоритм [[:en:exponential search|экспоненциального поиска]], поэтому производится минимальное количество обращений. Алгоритм полезен для массивов с метатаблицами (например, {{Scribunto reference|frame.args}}) и для псевдомассивов. Для обычных массивов предпочтительнее оператор {{Scribunto reference|Length operator|#}}, реализованный на [[Си]], он будет работать заметно быстрее. == inArray == {{LuaCode| TableTools.inArray(arr, valueToFind) }} Возвращает {{LuaTrue}} если {{Codevar|valueToFind}} входит в {{Codevar|arr}} или {{LuaFalse}} иначе. <includeonly> [[Категория:Модули:Базовые]] </includeonly>
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «Народные Сказки» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
РуСказки:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
Отменить
Справка по редактированию
(в новом окне)
Отобразить/Скрыть ограниченную ширину содержимого