Ternary Operator

From GiderosMobile
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Supported platforms: Platform android.pngPlatform ios.pngPlatform mac.pngPlatform pc.png
Available since: Gideros 2022.5

Description

Luau introduces a form of ternary conditional using if cond then value else alternative syntax.

See https://github.com/Roblox/luau/blob/master/rfcs/syntax-if-expression.md.


The if-then-else expression must match if <expr> then <expr> else <expr>. The operator can also contain an arbitrary number of elseif clauses, like if <expr> then <expr> elseif <expr> then <expr> else <expr>. Unlike if statements, else is mandatory.
The result of the expression is the then-expression when condition is truthy (not nil or false) and else-expression otherwise. Only one of the two possible resulting expressions is evaluated.

Examples

local x = if FFlagFoo then A else B

MyComponent.validateProps = t.strictInterface({
	layoutOrder = t.optional(t.number),
	newThing = if FFlagUseNewThing then t.whatever() else nil,
})
-- more trivial example
local x1 = 10
local x2 = 100
local x = if x1>x2 then x1 else x2 -- result x = 100

-- actual project code
local checkanim
checkanim = if ent.animation.anims[ent.animation.currentanim] then ent.animation.currentanim else g_ANIM_DEFAULT

See also

https://wiki.gideros.rocks/index.php/Examples#TERNARY_OPERATOR_.40hgy29