?: Elvis Operator
About 1 minOperators And TokensConditionals & Boolean
?: Elvis Operator
Returns the right operand if the left operand is falsy (expression)
Description
The Elvis Operator is a little like a conditional where the result of the operation is the first non-falsy value from left to right.
A falsy value is any of the following:
- an unset / undefined variable
- any value with a
nulldata type - a
stror generic with the valuefalse,null,0,no,off,fail,failed, ordisabled - a number (
num,floatorint) with the value0 - an empty object or zero length array
- and, of course, a boolean with the value
false
Examples
Assign with a default value
» $foo = $bar ?: "baz"
If $bar is falsy, then the value of $foo will be "baz".
Multiple elvis operators
» $unset_variable ?: null ?: false ?: "foobar"
foobar
Detail
Whats in a name?
Wikipedia explains this best where it says:
The name "Elvis operator" refers to the fact that when its common notation,
?:, is viewed sideways, it resembles an emoticon of Elvis Presley with his signature hairstyle.
See Also
- Error String, strerr:
err: Print a line to the stderr - Expressions:
expr: Expressions: mathematical, string comparisons, logical operators - Operators And Tokens: All supported operators and tokens
- Output String, stdout:
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??Null Coalescing Operator: Returns the right operand if the left operand is empty / undefined (expression)?stderr Pipe: Pipes stderr from the left hand command to stdin of the right hand command (removed 8.0)||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/elvis-op_doc.yaml.