Pembolehubah Lua


Sebelum menggunakan pembolehubah, ia mesti diisytiharkan dalam kod, iaitu pembolehubah mesti dicipta.

Sebelum pengkompil melaksanakan kod, pengkompil perlu mengetahui cara membuka kawasan storan untuk pembolehubah pernyataan untuk menyimpan nilai pembolehubah.

Terdapat tiga jenis pembolehubah Lua: pembolehubah global, pembolehubah tempatan dan medan dalam jadual.

Semua pembolehubah dalam Lua adalah pembolehubah global, walaupun dalam blok atau fungsi pernyataan, melainkan ia diisytiharkan secara eksplisit sebagai pembolehubah tempatan menggunakan tempatan.

Skop pembolehubah tempatan adalah dari kedudukan pengisytiharan hingga penghujung blok pernyataan.

Nilai lalai pembolehubah ialah sifar.

-- test.lua 文件脚本
a = 5               -- 全局变量
local b = 5         -- 局部变量

function joke()
    c = 5           -- 全局变量
    local d = 6     -- 局部变量
end

joke()
print(c,d)          --> 5 nil

do 
    local a = 6     -- 局部变量
    b = 6           -- 全局变量
    print(a,b);     --> 6 6
end

print(a,b)      --> 5 6

Hasil keluaran melaksanakan contoh di atas ialah:

$ lua test.lua 
5	nil
6	6
5	6

Pernyataan tugasan

Tugasan ialah kaedah paling asas untuk menukar nilai pembolehubah dan menukar medan meja.

a = "hello" .. "world"
t.n = t.n + 1
Lua boleh menetapkan nilai kepada berbilang pembolehubah pada masa yang sama Setiap elemen senarai pembolehubah dan senarai nilai dipisahkan dengan koma Nilai di sebelah kanan pernyataan tugasan akan diberikan kepada pembolehubah di sebelah kiri mengikut giliran.
a, b = 10, 2*x       <-->       a=10; b=2*x

Apabila menghadapi pernyataan tugasan, Lua akan mengira semua nilai di sebelah kanan dahulu dan kemudian melaksanakan operasi tugasan, jadi kita boleh menukar nilai pembolehubah seperti ini:

x, y = y, x                     -- swap 'x' for 'y'
a[i], a[j] = a[j], a[i]         -- swap 'a[i]' for 'a[j]'

Apabila bilangan pembolehubah dan bilangan nilai tidak konsisten , Lua akan sentiasa menggunakan strategi berikut berdasarkan bilangan pembolehubah:

a. 变量个数 > 值的个数             按变量个数补足nil
b. 变量个数 < 值的个数             多余的值会被忽略

Contohnya:

a, b, c = 0, 1
print(a,b,c)             --> 0   1   nil
 
a, b = a+1, b+1, b+2     -- value of b+2 is ignored
print(a,b)               --> 1   2
 
a, b, c = 0
print(a,b,c)             --> 0   nil   nil

Contoh terakhir di atas ialah situasi ralat biasa Nota: Jika anda ingin memberikan nilai kepada berbilang pembolehubah Setiap pembolehubah mesti diberikan nilai secara bergilir-gilir.

a, b, c = 0, 0, 0
print(a,b,c)             --> 0   0   0

Penugasan nilai berbilang sering digunakan untuk menukar pembolehubah, atau mengembalikan panggilan fungsi kepada pembolehubah:

a, b = f()

f() mengembalikan dua nilai, yang pertama diberikan kepada a dan yang kedua diberikan Beri b.

Anda harus menggunakan pembolehubah setempat sebanyak mungkin. Terdapat dua faedah:

  • 1.

  • 2. Mengakses pembolehubah tempatan adalah lebih pantas daripada pembolehubah global.


Indeks

Gunakan kurungan segi empat sama [] untuk indeks jadual. Lua juga menyediakan operasi .

t[i]
t.i                 -- 当索引为字符串类型时的一种简化写法
gettable_event(t,i) -- 采用索引访问本质上是一个类似这样的函数调用

Contohnya:

> site = {}
> site["key"] = "www.w3cschool.cc"
> print(site["key"])
www.w3cschool.cc
> print(site.key)
www.w3cschool.cc