Jump to content

Module:ТаблеТоолс/доc

From Vikipediya

This is the documentation page for Modul:TableTools

Андоза:Усед ин сйстем

Тҳис модуле инcлудес а нумбер оф фунcтионс фор деалинг wитҳ Луа таблес. Ит ис а мета-модуле, меант то бе cаллед фром отҳер Луа модулес, анд шоулд нот бе cаллед диреcтлй фром #инвоке.

Лоадинг тҳе модуле

[edit source]

То усе анй оф тҳе фунcтионс, фирст ёу муст лоад тҳе модуле.

local TableTools = require('Module:TableTools')

исПоситивеИнтегер

[edit source]
TableTools.isPositiveInteger(value)

Ретурнс true иф value ис а поситиве интегер, анд false иф нот. Алтҳоугҳ ит доэсн'т операте он таблес, ит ис инcлудед ҳере ас ит ис усефул фор детермининг wҳетҳер а гивен табле кей ис ин тҳе аррай парт ор тҳе ҳаш парт оф а табле.

исНан

[edit source]
TableTools.isNan(value)

Ретурнс true иф value ис а НаН валуэ, анд false иф нот. Алтҳоугҳ ит доэсн'т операте он таблес, ит ис инcлудед ҳере ас ит ис усефул фор детермининг wҳетҳер а валуэ cан бе а валид табле кей. (Луа wилл генерате ан эррор иф а НаН валуэ ис усед ас а табле кей.)

шаллоwCлоне

[edit source]
TableTools.shallowClone(t)

Ретурнс а cлоне оф а табле. Тҳе валуэ ретурнед ис а неw табле, бут алл субтаблес анд фунcтионс аре шаред. Метаметҳодс аре респеcтед, бут тҳе ретурнед табле wилл ҳаве но метатабле оф иц оwн. Иф ёу wант то маке а неw табле wитҳ но шаред субтаблес анд wитҳ метатаблес трансферред, ёу cан усе mw.clone инстеад. Иф ёу wант то маке а неw табле wитҳ но шаред субтаблес анд wитҳоут метатаблес трансферред, усе deepCopy wитҳ тҳе noMetatable оптион.

ремовеДуплиcатес

[edit source]
TableTools.removeDuplicates(t)

Ремовес дуплиcате валуэс фром ан аррай. Тҳис фунcтион ис онлй десигнед то wорк wитҳ стандард аррайс: кейс тҳат аре нот поситиве интегерс аре игноред, ас аре алл валуэс афтер тҳе фирст nil валуэ. (Фор аррайс cонтаининг nil валуэс, ёу cан усе compressSparseArray фирст.) Тҳе фунcтион триэс то пресерве тҳе ордер оф тҳе аррай: тҳе эарлиэст нон-униқуэ валуэ ис кепт, анд алл субсеқуэнт дуплиcате валуэс аре ремовед. Фор эхампле, фор тҳе табле {5, 4, 4, 3, 4, 2, 2, 1} removeDuplicates wилл ретурн {5, 4, 3, 2, 1}.

нумКейс

[edit source]
TableTools.numKeys(t)

Такес а табле t анд ретурнс ан аррай cонтаининг тҳе нумберс оф анй поситиве интегер кейс тҳат ҳаве нон-нил валуэс, сортед ин нумериcал ордер. Фор эхампле, фор тҳе табле {'фоо', нил, 'бар', 'баз', а = 'б'}, numKeys wилл ретурн {1, 3, 4}.

аффихНумс

[edit source]
TableTools.affixNums(t, prefix, suffix)

Такес а табле t анд ретурнс ан аррай cонтаининг тҳе нумберс оф кейс wитҳ тҳе оптионал префих prefix анд тҳе оптионал суффих suffix. Фор эхампле, фор тҳе табле {а1 = 'фоо', а3 = 'бар', а6 = 'баз'} анд тҳе префих 'a', affixNums wилл ретурн {1, 3, 6}. Алл чараcтерс ин prefix анд suffix аре интерпретед литераллй.

нумДата

[edit source]
TableTools.numData(t, compress)

Гивен а табле wитҳ кейс лике "foo1", "bar1", "foo2", анд "baz2", ретурнс а табле оф субтаблес ин тҳе формат { [1] = {фоо = 'техт', бар = 'техт'}, [2] = {фоо = 'техт', баз = 'техт'} }. Кейс тҳат дон'т энд wитҳ ан интегер аре сторед ин а субтабле намед "other". Тҳе cомпресс оптион cомпрессес тҳе табле со тҳат ит cан бе итератед овер wитҳ ipairs.

cомпрессСпарсеАррай

[edit source]
TableTools.compressSparseArray(t)

Такес ан аррай t wитҳ оне ор море нил валуэс, анд ремовес тҳе нил валуэс wҳиле пресервинг тҳе ордер, со тҳат тҳе аррай cан бе сафелй траверсед wитҳ ipairs. Анй кейс тҳат аре нот поситиве интегерс аре ремовед. Фор эхампле, фор тҳе табле {1, нил, фоо = 'бар', 3, 2}, compressSparseArray wилл ретурн {1, 3, 2}.

спарсеИпаирс

[edit source]
TableTools.sparseIpairs(t)

Тҳис ис ан итератор фунcтион фор траверсинг а спарсе аррай t. Ит ис симилар то ipairs, бут wилл cонтинуэ то итерате унтил тҳе ҳигҳест нумериcал кей, wҳереас ipairs май стоп афтер тҳе фирст nil валуэ. Анй кейс тҳат аре нот поситиве интегерс аре игноред.

Усуаллй sparseIpairs ис усед ин а генериc for лооп.

for i, v in TableTools.sparseIpairs(t) do
   -- code block
end

Ноте тҳат sparseIpairs усес тҳе pairs фунcтион ин иц имплементатион. Алтҳоугҳ соме табле кейс аппеар то бе игноред, алл табле кейс аре аccессед wҳен ит ис рун.

сизе

[edit source]
TableTools.size(t)

Финдс тҳе сизе оф а кей/валуэ паир табле. Фор эхампле, фор тҳе табле {фоо = 'фоо', бар = 'бар'}, size wилл ретурн 2. Тҳе фунcтион wилл алсо wорк он аррайс, бут фор аррайс ит ис море эффиcиэнт то усе тҳе # оператор. Ноте тҳат то финд тҳе табле сизе, тҳис фунcтион усес тҳе pairs фунcтион то итерате тҳроугҳ алл оф тҳе табле кейс.

кейсТоЛист

[edit source]
TableTools.keysToList(t, keySort, checked)

Ретурнс а лист оф тҳе кейс ин а табле, сортед усинг эитҳер а дефаулт cомпарисон фунcтион ор а cустом keySort фунcтион, wҳич фоллоwс тҳе саме рулес ас тҳе comp фунcтион супплиэд то table.sort. Иф keySort ис false, но сортинг ис доне. Сет checked то true то скип тҳе интернал тйпе чеcкинг.

сортедПаирс

[edit source]
TableTools.sortedPairs(t, keySort)

Итератес тҳроугҳ а табле, wитҳ тҳе кейс сортед усинг тҳе keysToList фунcтион. Иф тҳере аре онлй нумериcал кейс, sparseIpairs ис пробаблй море эффиcиэнт.

исАррай

[edit source]
TableTools.isArray(value)

Ретурнс true иф value ис а табле анд алл кейс аре cонсеcутиве интегерс стартинг ат 1.

исАррайЛике

[edit source]
TableTools.isArrayLike(value)

Ретурнс true иф value ис итерабле анд алл кейс аре cонсеcутиве интегерс стартинг ат 1.

инверт

[edit source]
TableTools.invert(arr)

Транспосес тҳе кейс анд валуэс ин ан аррай. Фор эхампле, инверт{ "а", "б", "c" } йиэлдс { а=1, б=2, c=3 }.

листТоСет

[edit source]
TableTools.listToSet(arr)

Cреатес а сет фром тҳе аррай парт оф тҳе табле arr. Индехинг тҳе сет бй анй оф тҳе валуэс оф тҳе аррай ретурнс true. Фор эхампле, листТоСет{ "а", "б", "c" } йиэлдс { а=труэ, б=труэ, c=труэ }. Сеэ алсо Модуле:Луа сет фор море адванcед wайс то cреате а сет.

деэпCопй

[edit source]
TableTools.deepCopy(orig, noMetatable, alreadySeen)

Cреатес а cопй оф тҳе табле orig. Ас wитҳ mw.clone, алл валуэс тҳат аре нот фунcтионс аре дуплиcатед анд тҳе идентитй оф таблес ис пресервед. Иф noMetatable ис true, тҳен тҳе метатабле (иф анй) ис нот cопиэд. Cан cопй таблес лоадед wитҳ mw.loadData.

Симилар то mw.clone, бут mw.clone cаннот cопй таблес лоадед wитҳ mw.loadData анд доэс нот аллоw метатаблес нот то бе cопиэд.

спарсеCонcат

[edit source]
TableTools.sparseConcat(t, sep, i, j)

Cонcатенатес алл валуэс ин тҳе табле тҳат аре индехед бй а поситиве интегер, ин ордер. Фор эхампле, спарсеCонcат{ "а", нил, "c", "д" } йиэлдс "аcд" анд спарсеCонcат{ нил, "б", "c", "д" } йиэлдс "бcд".

ленгтҳ

[edit source]
TableTools.length(t, prefix)

Финдс тҳе ленгтҳ оф ан аррай ор оф а қуаси-аррай wитҳ кейс wитҳ ан оптионал prefix суч ас "дата1", "дата2", этc. Ит усес ан эхпонентиал сеарч алгоритҳм то финд тҳе ленгтҳ, со ас то усе ас феw табле лоокупс ас поссибле.

Тҳис алгоритҳм ис усефул фор аррайс тҳат усе метатаблес (э.г. фраме.аргс) анд фор қуаси-аррайс. Фор нормал аррайс, жуст усе тҳе # оператор, ас ит ис имплементед ин C анд wилл бе қуиcкер.

инАррай

[edit source]
TableTools.inArray(arr, valueToFind)

Ретурнс true иф valueToFind ис а мембер оф тҳе аррай arr, анд false отҳерwисе.