Merkkijonon interpolointi

Lua:
Merkkijonon interpolointi

How to: - Kuinka:

-- Perus esimerkki
local name = "Mikko"
local age = 28
local greeting = string.format("Hei, nimeni on %s ja olen %d vuotta vanha.", name, age)
print(greeting)
-- Output: Hei, nimeni on Mikko ja olen 28 vuotta vanha.
-- Käyttäen taulukoita
local person = {name = "Liisa", age = 31}
local intro = string.format("Tavataan %s, hän on %d vuotta.", person.name, person.age)
print(intro)
-- Output: Tavataan Liisa, hän on 31 vuotta.
-- Käyttäen totuusarvoja ja ehtolauseita (ternary operator -tyyliin)
local skyIsBlue = true
local weather = string.format("Taivas on %s", skyIsBlue and 'sininen' or 'harmaa')
print(weather)
-- Output: Taivas on sininen

Deep Dive - Syväsukellus

Aiemmin, ennen kuin string.format tuli kuvioihin, merkkijonojen yhdistäminen oli hankalampaa. Vanha koulu käytti konkatenointia (.. operaattoria), mikä on edelleen kelvollinen mutta ei niin siisti:

local status = "Saldosi on: " .. balance

string.format on vahva vaihtoehto, sillä se perustuu C-kielen printf-toiminnallisuuteen. Formaatin merkkijonot, kuten %s tekstille ja %d kokonaisluvuille, tekevät koodista luettavampaa. Lisäksi, numerot ja jopa kellonajat voidaan formatoida monipuolisesti.

Lua ei ole alun perin suunniteltu interpolointia varten, mutta string.format ja .. operaattori ovat tulleet vakiokalustoon. Joissain modernissa skriptikielissä (esim. JavaScript tai Ruby), merkkijonointerpolointi on integroitu suoraan kieleen paljon yksinkertaisemmin syntakseilla, mutta Luassa se vaatii selkeämpiä askelia.

See Also - Katso Lisää