?? Null Coalescing Operator
??
Null Coalescing Operator
Returns the right operand if the left operand is empty / undefined (expression)
Description
The Null Coalescing operator is a little like a conditional where the result of the operation is the first non-empty value from left to right.
An empty value is any of the following:
- an unset / undefined variable
- any value with a
null
data type
Other "falsy" values such as numerical values of 0
, boolean false
, zero length strings and strings containing "null"
are not considered empty by the null coalescing operator.
Examples
Assign with a default value
» $foo = $bar ?? "baz"
If $bar
is unset then the value of $foo
will be "baz".
Multiple operators
» $unset_variable ?? null ?? "foobar"
foobar
Detail
The following extract was taken from Wikipedia:
The null coalescing operator (called the Logical Defined-Or operator in Perl) is a binary operator that is part of the syntax for a basic conditional expression in several programming languages. While its behavior differs between implementations, the null coalescing operator generally returns the result of its left-most operand if it exists and is not null, and otherwise returns the right-most operand. This behavior allows a default value to be defined for cases where a more specific value is not available.
In contrast to the ternary conditional if operator used as
x ? x : y
, but like the binary Elvis operator used asx ?: y
, the null coalescing operator is a binary operator and thus evaluates its operands at most once, which is significant if the evaluation ofx
has side-effects.
See Also
- Error String (
err
): Print a line to the stderr - Expressions (
expr
): Expressions: mathematical, string comparisons, logical operators - Is Value Null (
is-null
): Checks if a variable is null or undefined - Operators And Tokens: All supported operators and tokens
- Output String (
out
): Print a string to the stdout with a trailing new line character - Pipe Fail (
trypipe
): Checks for non-zero exits of each function in a pipeline - Pipeline: Overview of what a "pipeline" is
- Schedulers: Overview of the different schedulers (or 'run modes') in Murex
- Try Block (
try
): Handles non-zero exits inside a block of code &&
And Logical Operator: Continues next operation if previous operation passes?:
Elvis Operator: Returns the right operand if the left operand is falsy (expression)?
stderr Pipe: Pipes stderr from the left hand command to stdin of the right hand command (DEPRECATED)||
Or Logical Operator: Continues next operation only if previous operation fails- null: null function. Similar to /dev/null
This document was generated from gen/expr/null-coalescing-op_doc.yaml.