Menu
CoddyTech

Sicurezza rispetto a nil in modalità strict

Fa parte della sezione Introduzione a Luau del percorso Lua di Coddy. Lezione 77 di 80.

L'errore più comune in Lua è "attempt to index nil": codice che presumeva l'esistenza di un valore che invece non c'era. La risposta di Luau è la disciplina di nil: con --!strict, una semplice string non può mai essere nil. Se nil è una possibilità concreta, il tipo deve indicarlo con ?:

--!strict
local nickname: string? = nil   -- ok: string O nil
local username: string = nil    -- ✗ errore di tipo in modalità strict

La disciplina vale in entrambi i sensi: se hai una string?, la modalità strict non ti permetterà di usarla come stringa finché non avrai escluso nil. Lo strumento standard è un semplice confronto, che restringe il tipo proprio come una guardia typeof:

local function shout(name: string?): string
    if name ~= nil then
        return string.upper(name) -- qui name è una stringa
    end
    return "NOBODY"
end

Quando nil sarebbe un errore anziché un caso valido, usa assert: dopo assert(x ~= nil), il controllo considera x non nil per il resto dell'ambito e, in fase di esecuzione, l'assert genera subito un errore nel punto in cui l'ipotesi è errata, invece che in un punto lontano.

Il vantaggio: il controllo ti costringe a gestire ogni valore che «potrebbe mancare» mentre modifichi il codice, e l'errore di runtime semplicemente non si verifica mai.

challenge icon

Sfida

Facile

Fornisci un nome a cui potrebbe mancare un valore predefinito sicuro.

  1. Mantieni --!strict sulla prima riga.
  2. Scrivi local function getDisplayName(fullName: string?): string restituendo fullName quando non è nil, altrimenti "Anonymous User".
  3. Stampa getDisplayName("John Smith") e getDisplayName(nil).

Premi Esegui codice: l'output mostra John Smith e Anonymous User.

Provalo tu

--!strict
-- 1) getDisplayName(fullName: string?): string, usando "Anonymous User" come valore predefinito
-- 2) stampalo per "John Smith" e nil

Tutte le lezioni di Introduzione a Luau

Esercitati da solo: Compilatore Luau online