Jeśli Luau próbuje użyć wartości lub zmiennej w operacji, takiej jak arytmetyka , konkatenacja lub przypisanie , ale wartość nie jest typem, na który czeka operacja, Luau konwertuje ( zmusza ) wartość, aby zmienić jej wpisywaćdanych.Ograniczenia występują w czasie wykonania dla tej operacji i nie zmieniają wartości zmiennej.
Arytmetyka
Luau zmusza struny do liczb w operacjach arytmetycznych.Zachowanie to jest wbudowane w Luau.Jeśli typy są niezgodne z arytmetyką, Luau wyświetla błąd i nie uruchamia reszty skryptu.Na przykład nie możesz dodać ciągu do liczby, jeśli ciąg nie reprezentuje liczby.
print(100 + "7") -- 107print(100 - "7") -- 93print("1000" + 234) -- 1234print("1000" - 234) -- 766print("hello" + 234) -- error: attempt to perform arithmetic (add) string and number
Konkatenacja
W konkatenacji Luau zmusza liczby do strun. Aby przekształcić liczbę w strunę bez użycia zmuszania, użyj funkcji string.format().
print("Pi is " .. math.pi) --> Pi jest 3.1415926535898print("Pi is " .. 3.1415927) --> Pi jest 3.1415927-- Rundy do trzech miejsc dziesiętnychprint("Pi is " .. string.format("%.3f", 3.1415927)) -- Pi is 3.142
Przydział
Niektóre właściwości oczekują pewnych typów danych, takich jak Enum lub ciąg, ale możesz przypisać mu inną wartość typu i Luau przekształca wartość na typ, na jaki właściwość czeka.
Enumery
Luau zmusza liczby i ciągi wartości enum do pełnej nazwy enum.Na przykład możesz nazwać wartość właściwości Part.Material używając numeru, ciągu lub pełnej nazwy enum, a funkcja print() zawsze drukuje pełną nazwę enum.Najlepszą praktyką jest bycie wyraźnym i używanie pełnej nazwy enum.Aby uzyskać więcej informacji o Enums, zobacz Enums.
local Workspace = game:GetService("Workspace")local part1 = Instance.new("Part")part1.Material = 816part1.Parent = Workspaceprint(part1.Material) -- Enum.Material.Concretelocal part2 = Instance.new("Part")part2.Material = "Concrete"part2.Parent = Workspaceprint(part2.Material) -- Enum.Material.Concrete-- Jest to najlepsza praktyka, ponieważ jest najbardziej wyraźnalocal part3 = Instance.new("Part")part3.Material = Enum.Material.Concretepart3.Parent = Workspaceprint(part3.Material) -- Enum.Material.Concrete
Czas dnia
Właściwość Lighting.TimeOfDay, która określa, czy jest to noc, dzień czy inny czas, jest reprezentacją ciągu danych wpisywaćDateTime.Jeśli przypiszesz numer do Lighting.TimeOfDay, Luau zamieni go na reprezentację ciągu DateTime.
local Lighting = game:GetService("Lighting")Lighting.TimeOfDay = "05:00:00"print(Lighting.TimeOfDay) -- 05:00:00Lighting.TimeOfDay = 5print(Lighting.TimeOfDay) -- 05:00:00