# Logical functions ## `if_null` Arguments: `[test: Nullable[Anything], else: Nullable[Anything]]` Returns: `Anything` Returns the `test` value if it is non-null, otherwise returns the `else` value. This is useful for supplying a non-null default if a nullable expression yields null. For example, `if_null(sum(value), 0)` would return 0 if the sum function returns null. ## `if` Arguments: `[condition: Nullable[Bool], then: Nullable[Anything], else: Nullable[Anything]]` Returns: `Anything` A function that fills a similar role to an `if` statement in other programming languages, e.g. `if(depth > 1, then: 'damaged', else: 'safe')`. The `then` case is returned if `true`, `else` if `false` or null. Note that the `then` and `else` values must have similar types, or the function's return type will be the `anything` type. The `else` argument is optional. For example `if(false, 'foo')` will return null and the return type will be a nullable version of the `then` argument's type. RiskScape functions evaluate their arguments before the function is called, which can be wasteful when an expression takes a while to run, e.g. a spatial lookup. To avoid this behaviour, the `then` and `else` arguments can be supplied as lambda expressions. These are only evaluated when the particular case applies. In the example of `if(exposure.high_lsl_risk, () -> sample(exposure, landslide_susceptibility), else: 0)` the `sample` function will only be called if the `high_lsl_risk` attribute is true, avoiding unnecessary computation. ## `if_then_else` Arguments: `[condition: Nullable[Bool], then: Nullable[Anything], else: Nullable[Anything]]` Returns: `Anything` Deprecated, `if_then_else` is the same as `if`. See `if` for function help. ## `is_null` Arguments: `[Nullable[Anything]]` Returns: `Bool` Returns true if the given argument is null, as per https://docs.geoserver.org/latest/en/user/filter/function_reference.html#comparison-functions ## `is_not_null` Arguments: `[Nullable[Anything]]` Returns: `Bool` Returns true if the given argument is not null, i.e. it contains a value ## `not` Arguments: `[Bool]` Returns: `Bool` Returns the negation of the given input