Ternary and nullcheck operators

Ternary operator ? :

Hades supports inline if (or ternary operator) statements. They work as such:

condition ? statementIfConditionIsTrue : statementIfConditionIsFalse

Example

with math from std:math

func sinc(x float)
    put x != 0.0 ? math.sin(x)/x : 1.0
end

Null-conditional operator ::

The null conditional operator checks if the left side of the operator evaluates to null. If it does, the statement on the right side of the operator is executed and returned.

Example

with exceptions from std:exceptions
with console from std:io

var doStuff = { x =>
    x :: raise exceptions.ArgumentNullException("{} is null".format(nameof(x)))
}

try
    doStuff(null)
catch(default e)
    console.out(e.message)
end

//Output: x is null

func add(a,b) requires (a :: false) and (b :: false)
    put a + b
end
with params from std:params
with exceptions from std:exceptions
with str from std:string
with Int from std:int

var a = params.get(0)
var b = params.get(1)

a :: raise exceptions.ArgumentNullException("{} is null".format(nameof(a)))
b :: raise exceptions.ArgumentNullException("{} is null".format(nameof(b)))

var number = a < b ? b : a
var numberFromString = Int.parse(value="This is not an integer", raise=false)
//one could also use int("This is not an integer")
var numberFromStringNullchecked = numberFromString :: 0

Last updated