<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://new.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://new.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://new.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-21T19:37:49Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>http://new.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:TableTools/doc&amp;diff=7464&amp;oldid=prev</id>
		<title>Andras в 12:56, 29 февраля 2024</title>
		<link rel="alternate" type="text/html" href="http://new.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:TableTools/doc&amp;diff=7464&amp;oldid=prev"/>
		<updated>2024-02-29T12:56:08Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 12:56, 29 февраля 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Docpage}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Docpage}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Module rating&lt;/del&gt;|protected}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Рейтинг модуля&lt;/ins&gt;|protected}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Данный модуль предоставляет функции для работы с [[Lua#Таблицы|таблицами Lua]]. В общем случае, его функции не должны вызываться напрямую через #invoke, а только использоваться в других модулях.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Данный модуль предоставляет функции для работы с [[Lua#Таблицы|таблицами Lua]]. В общем случае, его функции не должны вызываться напрямую через #invoke, а только использоваться в других модулях.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Andras</name></author>
	</entry>
	<entry>
		<id>http://new.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:TableTools/doc&amp;diff=636&amp;oldid=prev</id>
		<title>Andras в 15:43, 9 мая 2023</title>
		<link rel="alternate" type="text/html" href="http://new.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:TableTools/doc&amp;diff=636&amp;oldid=prev"/>
		<updated>2023-05-09T15:43:22Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://new.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:TableTools/doc&amp;amp;diff=636&amp;amp;oldid=458&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>Andras</name></author>
	</entry>
	<entry>
		<id>http://new.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:TableTools/doc&amp;diff=458&amp;oldid=prev</id>
		<title>Andras в 02:15, 9 мая 2023</title>
		<link rel="alternate" type="text/html" href="http://new.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:TableTools/doc&amp;diff=458&amp;oldid=prev"/>
		<updated>2023-05-09T02:15:19Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://new.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:TableTools/doc&amp;amp;diff=458&amp;amp;oldid=211&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>Andras</name></author>
	</entry>
	<entry>
		<id>http://new.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:TableTools/doc&amp;diff=211&amp;oldid=prev</id>
		<title>Andras: Новая страница: «{{docpage}} {{module rating|protected}} Данный модуль предоставляет функции для работы с таблицами Lua. В общем случае, его функции не должны вызываться напрямую через #invoke, а только использоваться в других модулях.  == Подключение == Для использования функцион...»</title>
		<link rel="alternate" type="text/html" href="http://new.ru-skazki.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:TableTools/doc&amp;diff=211&amp;oldid=prev"/>
		<updated>2023-05-08T17:09:05Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «{{docpage}} {{module rating|protected}} Данный модуль предоставляет функции для работы с &lt;a href=&quot;/index.php?title=Lua&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Lua (страница не существует)&quot;&gt;таблицами Lua&lt;/a&gt;. В общем случае, его функции не должны вызываться напрямую через #invoke, а только использоваться в других модулях.  == Подключение == Для использования функцион...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{docpage}}&lt;br /&gt;
{{module rating|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>Andras</name></author>
	</entry>
</feed>