Latest web development tutorials

Lua meja (table)

tabel Lua adalah struktur data yang digunakan untuk membantu kita untuk membuat berbagai jenis data, seperti: digital, kamus.

Lua meja dengan array yang terkait, Anda dapat menggunakan jenis nilai untuk membuat indeks dari array, tapi nilai ini tidak nihil.

Lua ukuran meja tidak tetap, Anda dapat memperluas sesuai dengan kebutuhan mereka.

Lua juga melalui meja untuk menyelesaikan modul (modul), paket (paket) dan obyek (Object) dari. Misalnya indikasi string.format "memformat" untuk indeks tabel string.


tabel konfigurasi (Tabel)

constructor adalah ekspresi untuk membuat dan menginisialisasi meja. tabel Lua adalah hal yang kuat yang unik. Konstruktor yang paling sederhana adalah {} digunakan untuk membuat sebuah meja kosong. Anda dapat langsung menginisialisasi array:

-- 初始化表
mytable = {}

-- 指定值
mytable[1]= "Lua"

-- 移除引用
mytable = nil
-- lua 垃圾回收会释放内存

Ketika kita meja set elemen, dan kemudian menetapkan untuk b, maka a dan b menunjuk ke memori yang sama. Jika satu set nil, maka b juga dapat mengakses tabel unsur. Jika Anda tidak menentukan poin variabel ke, pengumpulan sampah Lua akan membersihkan memori yang sesuai.

Contoh berikut menunjukkan uraian di atas situasi:

-- 简单的 table
mytable = {}
print("mytable 的类型是 ",type(mytable))

mytable[1]= "Lua"
mytable["wow"] = "修改前"
print("mytable 索引为 1 的元素是 ", mytable[1])
print("mytable 索引为 wow 的元素是 ", mytable["wow"])

-- alternatetable和mytable的是指同一个 table
alternatetable = mytable

print("alternatetable 索引为 1 的元素是 ", alternatetable[1])
print("mytable 索引为 wow 的元素是 ", alternatetable["wow"])

alternatetable["wow"] = "修改后"

print("mytable 索引为 wow 的元素是 ", mytable["wow"])

-- 释放变量
alternatetable = nil
print("alternatetable 是 ", alternatetable)

-- mytable 仍然可以访问
print("mytable 索引为 wow 的元素是 ", mytable["wow"])

mytable = nil
print("mytable 是 ", mytable)

Kode di atas dijalankan sebagai akibat dari:

mytable 的类型是 	table
mytable 索引为 1 的元素是 	Lua
mytable 索引为 wow 的元素是 	修改前
alternatetable 索引为 1 的元素是 	Lua
mytable 索引为 wow 的元素是 	修改前
mytable 索引为 wow 的元素是 	修改后
alternatetable 是 	nil
mytable 索引为 wow 的元素是 	修改后
mytable 是 	nil

meja operasi

Tabel berikut berisi metode umum operasi:

Tidak. Metode & Tujuan
1 table.concat (table [, September [, mulai [, akhir]]]):

concat adalah concatenate (rantai) singkatan. table.concat () fungsi menentukan parameter yang tercantum dalam tabel berbagai bagian dari semua elemen dari posisi awal ke posisi akhir, spasi antara unsur-unsur dalam pemisah yang ditentukan (September).

2 table.insert (tabel, [pos,] value):

Array bagian tabel lokasi yang ditentukan (pos) insert unsur nilai. Pos parameter adalah opsional dan default pada bagian akhir array.

3 table.maxn (tabel)

Tentukan nilai kunci meja untuk semua nomor yang positif nilai kunci terbesar. Jika nilai positif, elemen kunci tidak hadir, ia mengembalikan 0. (Setelah Lua5.2 metode ini tidak ada, artikel ini menggunakan fungsi kustom untuk mencapai)

4 table.remove (table [, pos])

Mengembalikan array bagian meja terletak pada posisi elemen pos Setelah elemen akan bergerak maju. Pos parameter adalah opsional dan default dengan panjang meja, mulai dari elemen terakhir dihapus.

5 table.sort (table [, comp])

Untuk tabel tertentu dalam urutan menaik.

Selanjutnya kita melihat contoh-contoh dari metode ini.

koneksi tabel

Kita dapat menggunakan concat () metode untuk menghubungkan dua tabel:

fruits = {"banana","orange","apple"}
-- 返回 table 连接后的字符串
print("连接后的字符串 ",table.concat(fruits))

-- 指定连接字符
print("连接后的字符串 ",table.concat(fruits,", "))

-- 指定索引来连接 table
print("连接后的字符串 ",table.concat(fruits,", ", 2,3))

Mengeksekusi hasil kode output di atas:

连接后的字符串 	bananaorangeapple
连接后的字符串 	banana, orange, apple
连接后的字符串 	orange, apple

Penyisipan dan penghapusan

Contoh berikut menunjukkan tabel penyisipan dan penghapusan operasi:

fruits = {"banana","orange","apple"}

-- 在末尾插入
table.insert(fruits,"mango")
print("索引为 4 的元素为 ",fruits[4])

-- 在索引为 2 的键处插入
table.insert(fruits,2,"grapes")
print("索引为 2 的元素为 ",fruits[2])

print("最后一个元素为 ",fruits[5])
table.remove(fruits)
print("移除后最后一个元素为 ",fruits[5])

Mengeksekusi hasil kode output di atas:

索引为 4 的元素为 	mango
索引为 2 的元素为 	grapes
最后一个元素为 	mango
移除后最后一个元素为 	nil

tabel penyortiran

Contoh berikut menunjukkan jenis () metode penggunaan, untuk Tabel Urutan

fruits = {"banana","orange","apple","grapes"}
print("排序前")
for k,v in ipairs(fruits) do
	print(k,v)
end

table.sort(fruits)
print("排序后")
for k,v in ipairs(fruits) do
	print(k,v)
end

Mengeksekusi hasil kode output di atas:

排序前
1	banana
2	orange
3	apple
4	grapes
排序后
1	apple
2	banana
3	grapes
4	orange

tabel Max

table.maxn setelah Lua5.2 metode ini tidak ada, kita mendefinisikan metode table_maxn.

Contoh berikut menunjukkan bagaimana untuk mendapatkan tabel nilai maksimum:

function table_maxn(t)
    local mn = 0
    for k, v in pairs(t) do
        if mn < k then
            mn = k
        end
    end
    return mn
end
tbl = {[1] = "a", [2] = "b", [3] = "c", [26] = "z"}
print("tbl 长度 ", #tbl)
print("tbl 最大值 ", table_maxn(tbl))

Mengeksekusi hasil kode output di atas:

tbl 长度 	3
tbl 最大值 	26