Compartilhamento de tecnologia

Introdução a lua (2) – tipos de dados

2024-07-12

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

Prefácio

Este artigo é referenciado em:Tipos de dados Lua | Tutorial para iniciantes (runoob.com)

Para quem quiser saber mais, confira o link acima:

oito tipos básicos

type - função para visualizar o tipo de dados:

programa de teste:

  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

Demonstração de efeito

Você pode ver que o tipo (Y) que geramos aqui é do tipo nil, por quê? O próximo nulo (vazio) será demonstrado para você.

nulo (vazio)

O tipo nil representa um tipo que não possui nenhum valor válido. Ele possui apenas um valor - nil. Por exemplo, imprimir uma variável sem atribuição produzirá um valor nulo:

Tipo de variável não inicializada - nulo

Da seguinte forma: Os tipos de saída das três variáveis ​​​​que não recebem valores iniciais são todos nulos.

nil exclui pares de valores-chave na tabela

programa de teste

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

resultado da operação

Para variáveis ​​e tabelas globais, nil também tem um efeito de "exclusão". Atribuir um valor nil a variáveis ​​globais ou variáveis ​​na tabela equivale a excluí-las.

nulo deve ser comparado com aspas duplas "

type(X)==nil resulta emfalsoA razão é que type(X) é essencialmente a string "nil" retornada, que é um tipo de string:

boleano

O tipo booleano possui apenas dois valores opcionais: verdadeiro (verdadeiro) e falso (falso). Lua trata falso e nil como falso, e todo o resto é verdadeiro.

programa de teste

  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

Demonstração de efeito

número


Lua tem apenas um tipo de número por padrão - tipo double (precisão dupla) (o tipo padrão pode ser modificado em luaconf.h), os seguintes métodos de escrita são considerados num

string(string)

"" '' - representa uma string


[[ ]] - representa uma string
 

Números podem ser forçados a strings

Ao realizar operações aritméticas em uma string numérica, Lua tentará converter a string numérica em um número:

Use .. para concatenar strings

 

mesa

Em Lua, a criação de tabelas é realizada através de "expressões construtivas". A expressão construída mais simples é {}, que é usada para criar uma tabela vazia. Você também pode adicionar alguns dados à tabela e inicializá-la diretamente:

tabela de inicialização

Modificar tabela com base no índice (chave)

Uma tabela em Lua é na verdade uma"Matriz associativa"(matrizes associativas), o índice da matriz pode ser um número ou uma string.

Os índices de Lua começam em 1 (em vez de)

A tabela não terá um comprimento fixo. Quando novos dados forem adicionados, o comprimento da tabela aumentará automaticamente. As tabelas que não forem inicializadas serão nulas.

função

Em Lua, as funções são consideradas “Valores de Primeira Classe”.

As funções podem ser armazenadas em variáveis:

Expressão lambda (função anônima) passando parâmetros


fio


Em Lua, o thread mais importante é a corrotina. É semelhante a um thread e possui sua própria pilha independente, variáveis ​​locais e ponteiro de instrução.
Variáveis ​​globais e muitas outras coisas podem ser compartilhadas com outras corrotinas.

A diferença entre threads e corrotinas: Threads podem ser executados várias vezes ao mesmo tempo, mas as corrotinas só podem ser executadas uma por vez, e uma corrotina em execução só será suspensa quando for suspensa.

userdata (tipo personalizado)


userdata é um tipo de dados definidos pelo usuário usado para representar um tipo criado por um aplicativo ou biblioteca de linguagem C/C++.
Você pode armazenar quaisquer dados de qualquer tipo de dados C/C++ (geralmente struct e ponteiro) em uma variável Lua e chamá-la