Lua:
Concatenazione di stringhe
How to:
-- Concatenazione semplice con l'operatore ..
local saluto = "Ciao"
local nome = "Luca"
local messaggio = saluto .. ", " .. nome .. "!"
print(messaggio) -- Ciao, Luca!
-- Concatenazione con numeri (vengono trasformati in stringhe)
local giorno = 10
local mese = "Aprile"
local data = "Oggi è il " .. giorno .. " di " .. mese
print(data) -- Oggi è il 10 di Aprile
-- Utilizzo di table.concat per unire elementi di un array
local ingredientiPizza = {"Pomodoro", "Mozzarella", "Basilico"}
local pizza = table.concat(ingredientiPizza, ", ")
print(pizza) -- Pomodoro, Mozzarella, Basilico
Deep Dive
In Lua, la concatenazione di stringhe è stata da sempre un’operazione fondamentale. Nelle prime versioni di Lua, la concatenazione era già presente tramite l’operatore ..
. Con l’avanzare delle versioni e delle efficienza di LuaJIT, oggi concatenare le stringhe è un’operazione molto veloce.
Esiste anche la funzione table.concat
che è ottimizzata per unire gli elementi di un array in una stringa, molto utile se si ha a che fare con un numero elevato di stringhe.
Un dettaglio implementativo importante è come Lua gestisce la memoria durante la concatenazione. Lua cerca di ottimizzare l’uso della memoria allocando spazio aggiuntivo quando si concatenano stringhe, per evitare il più possibile il riallocamento di memoria.
Alternativamente, per evitare un uso eccessivo della memoria durante concatenazioni multiple, si può optare per l’uso di tabelle (table) e table.concat
per ridurre la quantità di riallocazioni di memoria che avvengono quando si concatenano stringhe numerose e grandi.
See Also
- Il manuale ufficiale di Lua 5.4: https://www.lua.org/manual/5.4/
- Per una comprensione più approfondita di LuaJIT e le sue ottimizzazioni: http://luajit.org/
- La community di Stack Overflow per chiedere domande specifiche su Lua: https://stackoverflow.com/questions/tagged/lua