Difference between revisions of "Ternary Operator"

From GiderosMobile
m (Text replacement - "<source" to "<syntaxhighlight")
Line 14: Line 14:
  
 
=== Examples ===
 
=== Examples ===
<source lang="lua">
+
<syntaxhighlight lang="lua">
 
local x = if FFlagFoo then A else B
 
local x = if FFlagFoo then A else B
  
Line 23: Line 23:
 
</source>
 
</source>
  
<source lang="lua">
+
<syntaxhighlight lang="lua">
 
-- more trivial example
 
-- more trivial example
 
local x1 = 10
 
local x1 = 10

Revision as of 15:31, 13 July 2023

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

<syntaxhighlight lang="lua"> 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, }) </source>

<syntaxhighlight lang="lua"> -- 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 </source>

See also

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