Lua Academy · Les

Overzicht van Lua-datatypen

Verken de typen nil, boolean, number, string, table, function en userdata.

Les 1 van 412 stappen

Overzicht van Lua-datatypen is een gratis Lua Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Lua Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Lua Academy bevat in totaal 4 lessen.

Welkom bij Lua

Lua is een lichte, snelle en inbedbare scripttaal die wordt gebruikt in game-engines, webservers en ingebedde systemen. Voordat je echte programma's schrijft, moet je begrijpen hoe Lua gegevens weergeeft.

Lua heeft 8 basistypen: nil, boolean, number, string, table, function, userdata en thread. Elke waarde in Lua behoort precies tot een van deze typen.

-- Check the type of any value with type()
print(type(42))        -- number
print(type("hello"))   -- string
print(type(true))      -- boolean
print(type(nil))       -- nil

nil: de afwezigheid van een waarde

nil is Lua's manier om niets of geen waarde weer te geven. Het is de enige waarde van zijn type. Variabelen waaraan nooit een waarde is toegewezen, bevatten automatisch nil.

Door nil toe te wijzen aan een globale variabele, verwijder je deze in feite. In tabellen verwijdert het instellen van een sleutel op nil die invoer volledig.

-- Unassigned variables are nil
print(x)          -- nil

x = 10
print(x)          -- 10

x = nil
print(x)          -- nil (variable is gone)

boolean: true en false

Het type boolean heeft precies twee waarden: true en false. De regels van Lua voor waarheidswaarden zijn eenvoudig maar belangrijk: alleen nil en false zijn onwaar. Al het andere — inclusief het getal 0 en de lege tekenreeks "" — is waar.

Dit verschilt van veel talen waarin 0 of "" als onwaar wordt beschouwd.

-- Lua truthiness examples
if 0 then print("0 is truthy!") end       -- prints!
if "" then print("empty str is truthy!") end -- prints!
if nil then print("nil") else print("nil is falsy") end
if false then print("false") else print("false is falsy") end

number: gehele getallen en drijvende-kommagetallen

Lua 5.3+ heeft twee subtypen van number: integer en float. Gehele getallen zijn exacte waarden van 64 bits; floats gebruiken dubbele precisie volgens IEEE 754. In Lua 5.1/5.2 zijn alle getallen doubles.

De functie math.type() maakt onderscheid tussen de twee subtypen. Delen met / levert altijd een float op; // (gehele deling naar beneden) levert een integer op wanneer beide operanden integers zijn.

print(type(10))       -- number
print(type(10.5))     -- number
print(math.type(10))  -- integer
print(math.type(10.5))-- float
print(10 / 3)         -- 3.3333...
print(10 // 3)        -- 3  (floor division)

string: tekst in Lua

Strings in Lua zijn onveranderlijke reeksen bytes. Je kunt ze begrenzen met enkele aanhalingstekens, dubbele aanhalingstekens of lange haakjes [[...]] voor tekenreeksen over meerdere regels. Tekenreeksen met lange haakjes negeren de eerste nieuwe regel en behouden al het overige letterlijk.

Lua-strings zijn geïnterned, dus identieke strings delen geheugen. De lengteoperator # retourneert het aantal bytes.

local s1 = 'single quotes'
local s2 = "double quotes"
local s3 = [[multi-line
long string]]

print(#s1)           -- 13
print(type(s1))      -- string
print(s1 .. " works") -- concatenation with ..

table: de universele container

Het type table is Lua's enige samengestelde gegevensstructuur, maar het is krachtig genoeg om arrays, woordenboeken, objecten, verzamelingen en meer te implementeren. Tabellen zijn associatieve arrays: ze koppelen sleutels aan waarden, waarbij sleutels elke waarde mogen zijn die niet nil of NaN is.

Je maakt tabellen aan met accolades {}. Tabellen in arraystijl gebruiken gehele sleutels die bij 1 beginnen.

-- Array style
local fruits = {"apple", "banana", "cherry"}
print(fruits[1])   -- apple (1-indexed!)

-- Dictionary style
local person = {name = "Alice", age = 30}
print(person.name) -- Alice
print(person["age"]) -- 30

function: waarden van de eerste klasse

Functies in Lua zijn waarden van de eerste klasse van het type function. Je kunt ze opslaan in variabelen, als argumenten doorgeven en vanuit andere functies retourneren. Daardoor is Lua van nature geschikt voor patronen uit functioneel programmeren.

Je kunt functies definiëren met het sleutelwoord function of anonieme functies aan variabelen toewijzen. Beide vormen zijn gelijkwaardig.

-- Two equivalent ways to define a function
function greet(name)
  return "Hello, " .. name
end

local greet2 = function(name)
  return "Hello, " .. name
end

print(type(greet))   -- function
print(greet("Lua"))  -- Hello, Lua

userdata en thread

userdata vertegenwoordigt willekeurige C-gegevens die door de hosttoepassing worden beheerd. Je kunt userdata niet in pure Lua maken — het komt uit C-extensies of inbedomgevingen zoals game-engines. Hiermee kan C-code objecten beschikbaar maken voor Lua-scripts.

thread vertegenwoordigt coroutines — onafhankelijke uitvoeringsdraden met hun eigen stacks. We behandelen coroutines in een aparte les. Onthoud voor nu dat coroutine.create() een waarde van het type thread retourneert.

-- thread type via coroutine
local co = coroutine.create(function()
  print("coroutine body")
end)

print(type(co))  -- thread

-- userdata comes from C, not creatable in pure Lua
-- type(io.stdin) == "file" is a userdata variant

type() gebruiken om waarden te inspecteren

De ingebouwde functie type() retourneert altijd een string met de naam van het type van zijn argument. Dit is nuttig voor defensief programmeren en foutopsporing. Je kunt het resultaat rechtstreeks vergelijken met de strings met typenamen.

Let op: type(nil) retourneert de string "nil", niet de waarde nil zelf. Zo kun je veilig controleren of een variabele nil bevat zonder fouten te veroorzaken.

local values = {42, "hi", true, nil, {}, function() end}

-- Note: nil in table stops ipairs early
for i = 1, 3 do
  print(i, type(values[i]))
end
-- 1  number
-- 2  string
-- 3  boolean

Verschillen tussen typen in andere talen

Als je uit JavaScript, Python of Java komt, kunnen enkele regels voor Lua-typen je verrassen. Er is geen afzonderlijk type voor gehele getallen dat zichtbaar is voor type() — zowel gehele getallen als floats retourneren "number". Arrays hebben geen eigen type — het zijn gewoon tabellen. Klassen bestaan niet — objecten zijn tabellen met metatabellen.

Als je deze verschillen begrijpt, voorkom je veelvoorkomende fouten bij het overstappen tussen talen.

-- No separate array type
local arr = {1, 2, 3}
print(type(arr))      -- table (not array!)

-- No separate integer type visible
print(type(1))        -- number
print(type(1.0))      -- number

-- math.type distinguishes
print(math.type(1))   -- integer
print(math.type(1.0)) -- float

Korte controle

Wat retourneert type(0) in Lua?

Samenvatting: overzicht van Lua-gegevenstypen

Je hebt alle 8 Lua-typen geleerd:

  • nil — afwezigheid van een waarde; onwaar
  • boolean — true/false; alleen nil en false zijn onwaar
  • number — geheel getal of float; gebruik math.type() om onderscheid te maken
  • string — onveranderlijke reeksen bytes; gebruik .. om samen te voegen
  • table — de universele container voor arrays en woordenboeken
  • function — waarden van de eerste klasse die je in variabelen kunt opslaan
  • userdata — C-gegevens die aan Lua beschikbaar worden gesteld
  • thread — verwijzingen naar coroutines

Volgende: variabelen declareren — globale en lokale scope.

Gratis beginnen

Leer Lua met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
40
Lessen
159

Veelgestelde vragen

Is de les “Overzicht van Lua-datatypen” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Lua Academy, waaronder “Overzicht van Lua-datatypen”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Lua Academy bevat in totaal 4 lessen.

Wat leer ik in “Overzicht van Lua-datatypen”?

Verken de typen nil, boolean, number, string, table, function en userdata. Je oefent met Lua Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Lua Academy te beginnen?

Ervaring vooraf is niet nodig. Lua Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Overzicht van Lua-datatypen”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Lua Academy?

Ja. Elke les over Lua Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Overzicht van Lua-datatypen
  2. Variabelen declareren in Lua
  3. Rekenkundige en relationele operatoren
  4. Typecoërcie en conversie
← Terug naar Lua Academy