Module:ТаблеТоолс/доc
This is the documentation page for Modul:TableTools
![]() | Тҳис модуле ис субжеcт то паге протеcтион. Ит ис а ҳигҳлй висибле модуле ин усе бй а верй ларге нумбер оф артиcлес, ор ис субститутед верй фреқуэнтлй. Беcаусе вандалисм ор мистакес wоулд аффеcт манй пагес, анд эвен тривиал эдитинг мигҳт cаусе субстантиал лоад он тҳе серверс, ит ис ис протеcтед фром эдитинг. |
![]() | Бу андоза қуйидаги Луадан фойдаланади: |
Тҳис модуле ин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исе.