Coerción de tipos

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Si Luau intenta usar un valor o variable en una operación, como aritmética, concatenación o asignación, pero el valor no es del tipo que la operación espera, entonces Luau convierte (coerce) el valor para cambiar su tipo de dato. La coerción ocurre en tiempo de ejecución para esa operación y no cambia el valor de una variable.

Aritmética

Luau coacciona cadenas a números en operaciones aritméticas. Este comportamiento está integrado en Luau. Si los tipos son incompatibles para la aritmética, Luau arroja un error y no ejecuta el resto del script. Por ejemplo, no puedes sumar una cadena a un número si la cadena no representa un número.


print(100 + "7") -- 107
print(100 - "7") -- 93
print("1000" + 234) -- 1234
print("1000" - 234) -- 766
print("hello" + 234) -- error: intento de realizar aritmética (suma) entre una cadena y un número

Concatenación

En la concatenación, Luau coacciona números a cadenas. Para convertir un número a una cadena sin usar coerción, usa la función string.format().


print("Pi es " .. math.pi) --> Pi es 3.1415926535898
print("Pi es " .. 3.1415927) --> Pi es 3.1415927
-- Redondea a tres decimales
print("Pi es " .. string.format("%.3f", 3.1415927)) -- Pi es 3.142

Asignación

Algunas propiedades esperan ciertos tipos de datos, como un Enum o cadena, pero puedes asignar un valor de un tipo diferente y Luau convierte el valor al tipo que la propiedad espera.

Enums

Luau coacciona números y cadenas de valores enum al nombre completo del enum. Por ejemplo, puedes nombrar el valor de la propiedad Part.Material usando un número, una cadena o el nombre completo del enum, y la función print() siempre imprime el nombre completo del enum. Es una buena práctica ser explícito y usar el nombre completo del enum. Para más información sobre Enums, consulta 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
-- Esta es la mejor práctica porque es la más explícita
local part3 = Instance.new("Part")
part3.Material = Enum.Material.Concrete
part3.Parent = Workspace
print(part3.Material) -- Enum.Material.Concrete

Hora del día

La propiedad Lighting.TimeOfDay, que define si es de noche, de día o en cualquier otro momento, es una representación en cadena del tipo de dato DateTime. Si asignas un número a Lighting.TimeOfDay, Luau lo convierte a la representación en cadena de 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
©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.