<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://ru.ru-skazki.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ATableTools%2Fdoc</id>
	<title>Модуль:TableTools/doc - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://ru.ru-skazki.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ATableTools%2Fdoc"/>
	<link rel="alternate" type="text/html" href="http://ru.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:TableTools/doc&amp;action=history"/>
	<updated>2026-05-08T05:57:23Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>http://ru.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:TableTools/doc&amp;diff=4803&amp;oldid=prev</id>
		<title>Импортёр: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://ru.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:TableTools/doc&amp;diff=4803&amp;oldid=prev"/>
		<updated>2024-05-01T10:06:59Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 13:06, 1 мая 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Импортёр</name></author>
	</entry>
	<entry>
		<id>http://ru.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:TableTools/doc&amp;diff=4802&amp;oldid=prev</id>
		<title>ru&gt;Andras в 12:56, 29 февраля 2024</title>
		<link rel="alternate" type="text/html" href="http://ru.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:TableTools/doc&amp;diff=4802&amp;oldid=prev"/>
		<updated>2024-02-29T12:56:08Z</updated>

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