Condivisione della tecnologia

Iniziare con lua (2) - tipi di dati

2024-07-12

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

Prefazione

Questo articolo è citato da:Tipi di dati Lua |. Tutorial per principianti (runoob.com)

Per chi vuole saperne di più, può consultare il link qui sopra:

otto tipi fondamentali

type - funzione per visualizzare il tipo di dati:

programma di prova:

  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

Dimostrazione degli effetti

Puoi vedere che il tipo (Y) che produciamo qui è un tipo nil, perché? Il prossimo zero (vuoto) ti verrà dimostrato.

zero (vuoto)

Il tipo nil rappresenta un tipo che non ha alcun valore valido Ha un solo valore: nil. Ad esempio, la stampa di una variabile senza assegnazione restituirà un valore nil:

Tipo di variabile non inizializzata: nil

Come segue: I tipi di output delle tre variabili a cui non sono assegnati valori iniziali sono tutti pari a zero.

nil elimina le coppie chiave-valore nella tabella

programma di prova

  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后============")

risultato dell'operazione

Per le variabili e le tabelle globali, nil ha anche un effetto di "cancellazione". Assegnare un valore nil alle variabili globali o alle variabili nella tabella equivale a cancellarle.

nil dovrebbe essere confrontato con virgolette doppie "

type(X)==nil risultafalsoIl motivo è che type(X) è essenzialmente la stringa "nil" restituita, che è un tipo stringa:

booleano

Il tipo booleano ha solo due valori opzionali: true (true) e false (false). Lua tratta false e nil come false e anche tutto il resto è vero.

programma di prova

  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

Dimostrazione degli effetti

numero


Lua ha solo un tipo numerico per impostazione predefinita: tipo double (doppia precisione) (il tipo predefinito può essere modificato in luaconf.h), i seguenti metodi di scrittura sono considerati come num

stringa(stringa)

"" '' -- rappresenta una stringa


[[ ]] -- rappresenta una stringa
 

I numeri possono essere forzati in stringhe

Quando si eseguono operazioni aritmetiche su una stringa numerica, Lua proverà a convertire la stringa numerica in un numero:

Utilizzare .. per concatenare le stringhe

 

tavolo

In Lua, la creazione di tabelle viene eseguita tramite "espressioni costruttive". L'espressione costruita più semplice è {}, che viene utilizzata per creare una tabella vuota. Puoi anche aggiungere alcuni dati alla tabella e inizializzare direttamente la tabella:

tabella di inizializzazione

Modifica la tabella in base all'indice (chiave)

Un tavolo in Lua è in realtà a"Array associativo"(array associativi), l'indice dell'array può essere un numero o una stringa.

Gli indici di Lua iniziano da 1 (invece di)

La tabella non avrà una lunghezza fissa. Quando vengono aggiunti nuovi dati, la lunghezza della tabella aumenterà automaticamente. Le tabelle non inizializzate saranno pari a zero.

funzione

In Lua, le funzioni sono considerate "Valori di prima classe".

Le funzioni possono essere memorizzate in variabili:

Parametri di passaggio dell'espressione Lambda (funzione anonima).


filo


In Lua, il filo più importante è la coroutine. È simile a un thread e ha il proprio stack indipendente, variabili locali e puntatore alle istruzioni.
Le variabili globali e la maggior parte delle altre cose possono essere condivise con altre coroutine.

La differenza tra thread e coroutine: i thread possono essere eseguiti più volte contemporaneamente, ma le coroutine possono eseguirne solo una alla volta e una coroutine in esecuzione verrà sospesa solo quando viene sospesa.

dati utente (tipo personalizzato)


userdata è un tipo di dati definiti dall'utente utilizzati per rappresentare un tipo creato da un'applicazione o da una libreria di linguaggi C/C++.
Puoi memorizzare qualsiasi dato di qualsiasi tipo di dati C/C++ (solitamente struttura e puntatore) in una variabile Lua e chiamarla