Berbagi teknologi

Memulai dengan lua (2) - tipe data

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Kata pengantar

Artikel ini direferensikan dari:Tipe data Lua |. Tutorial Pemula (runoob.com)

Bagi yang ingin tahu lebih lanjut, silakan cek link di atas:

delapan tipe dasar

type - berfungsi untuk melihat tipe data:

program pengujian:

  1. print(type("Hello world")) --> string
  2. print(type(10.4*3)) --> number
  3. print(type(print)) --> function
  4. print(type(type)) --> function
  5. print(type(true)) --> boolean
  6. print(type(nil)) --> nil
  7. print(type(type(X))) --> string
  8. print(type(Y)) -->nil
  9. print(type('Y')) -->string

Demonstrasi efek

Anda dapat melihat bahwa type(Y) yang kita output di sini adalah tipe nihil, mengapa? Nil berikutnya (kosong) akan ditunjukkan untuk Anda.

nihil (kosong)

Tipe nil mewakili tipe yang tidak memiliki nilai valid. Tipe ini hanya memiliki satu nilai - nil. Misalnya, mencetak variabel tanpa penetapan akan menghasilkan nilai nihil:

Tipe variabel yang tidak diinisialisasi - nihil

Sebagai berikut: Tipe keluaran dari ketiga variabel yang tidak diberi nilai awal semuanya nihil.

nil menghapus pasangan nilai kunci dalam tabel

program pengujian

  1. tab1 = { key1 = "val1", key2 = "val2",
  2. "val3","val4",key3 = "val5" }
  3. for k, v in pairs(tab1) do
  4. print(k .. " - " .. v)
  5. end
  6. print("=========直接输出=============")
  7. tab1.key1 = nil
  8. for k, v in pairs(tab1) do
  9. print(k .. " - " .. v)
  10. end
  11. print("============删除key1后==========")
  12. tab1.key3 = nil
  13. for k,v in pairs(tab1) do
  14. print(k.. " - "..v)
  15. end
  16. print("=========删除key3后============")

hasil operasi

Untuk variabel dan tabel global, nil juga memiliki efek "penghapusan". Menetapkan nilai nihil pada variabel atau variabel global dalam tabel sama dengan menghapusnya.

nil harus dibandingkan dengan tanda kutip ganda "

type(X)==nil menghasilkanPALSUAlasannya adalah type(X) pada dasarnya adalah string "nil" yang dikembalikan, yang merupakan tipe string:

boolean

Tipe boolean hanya mempunyai dua nilai pilihan: benar (true) dan salah (false). Lua memperlakukan false dan nil sebagai salah, dan segala sesuatu yang lain adalah benar.

program pengujian

  1. print(type(true))
  2. print(type(false))
  3. print(type(nil))
  4. if false or nil then
  5. print("至少有一个是 true")
  6. else
  7. print("false 和 nil 都为 false")
  8. end
  9. if 0 then
  10. print("数字 0 是 true")
  11. else
  12. print("数字 0 为 false")
  13. end

Demonstrasi efek

nomor


Lua hanya memiliki satu tipe angka secara default - tipe ganda (presisi ganda) (tipe default dapat dimodifikasi di luaconf.h), metode penulisan berikut dianggap sebagai num

tali(tali)

"" '' -- mewakili string


[[ ]] -- mewakili sebuah string
 

Angka dapat dipaksa menjadi string

Saat melakukan operasi aritmatika pada string numerik, Lua akan mencoba mengubah string numerik menjadi angka:

Gunakan .. untuk menggabungkan string

 

meja

Di Lua, pembuatan tabel dicapai melalui "ekspresi konstruktif". Ekspresi yang paling sederhana adalah {}, yang digunakan untuk membuat tabel kosong. Anda juga dapat menambahkan beberapa data ke tabel dan menginisialisasi tabel secara langsung:

tabel inisialisasi

Ubah tabel berdasarkan indeks (kunci)

Sebuah tabel di Lua sebenarnya adalah a"Susunan asosiatif"(array asosiatif), indeks array dapat berupa angka atau string.

Indeks Lua dimulai dari 1 (bukannya)

Tabel tidak akan memiliki panjang yang tetap. Ketika data baru ditambahkan, panjang tabel secara otomatis akan bertambah.

fungsi

Di Lua, fungsi dianggap sebagai "Nilai Kelas Satu".

Fungsi dapat disimpan dalam variabel:

Ekspresi Lambda (fungsi anonim) meneruskan parameter


benang


Di Lua, thread yang paling penting adalah coroutine. Ini mirip dengan thread dan memiliki tumpukan independen, variabel lokal, dan penunjuk instruksinya sendiri.
Variabel global dan sebagian besar hal lainnya dapat dibagikan dengan coroutine lain.

Perbedaan antara thread dan coroutine: Thread dapat berjalan beberapa kali pada waktu yang sama, tetapi coroutine hanya dapat berjalan satu kali dalam satu waktu, dan coroutine yang berjalan hanya akan ditangguhkan jika ditangguhkan.

data pengguna (tipe khusus)


data pengguna adalah tipe data yang ditentukan pengguna yang digunakan untuk mewakili tipe yang dibuat oleh aplikasi atau pustaka bahasa C/C++.
Anda dapat menyimpan data apa pun dari tipe data C/C++ apa pun (biasanya struct dan pointer) ke dalam variabel Lua dan menyebutnya