Typ przymusu

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

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") -- 107
print(100 - "7") -- 93
print("1000" + 234) -- 1234
print("1000" - 234) -- 766
print("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.1415926535898
print("Pi is " .. 3.1415927) --> Pi jest 3.1415927
-- Rundy do trzech miejsc dziesiętnych
print("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 = 816
part1.Parent = Workspace
print(part1.Material) -- Enum.Material.Concrete
local part2 = Instance.new("Part")
part2.Material = "Concrete"
part2.Parent = Workspace
print(part2.Material) -- Enum.Material.Concrete
-- Jest to najlepsza praktyka, ponieważ jest najbardziej wyraźna
local part3 = Instance.new("Part")
part3.Material = Enum.Material.Concrete
part3.Parent = Workspace
print(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:00
Lighting.TimeOfDay = 5
print(Lighting.TimeOfDay) -- 05:00:00