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