From 81204c3ea610c867f20e27c0afb072212d627250 Mon Sep 17 00:00:00 2001 From: Sofien Naas Date: Fri, 22 Apr 2022 01:18:59 +0100 Subject: [PATCH] [ExpressionLanguage] Feature Null-coalescing operator --- components/expression_language/syntax.rst | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/components/expression_language/syntax.rst b/components/expression_language/syntax.rst index 9f0ace947b0..92a69b01642 100644 --- a/components/expression_language/syntax.rst +++ b/components/expression_language/syntax.rst @@ -343,6 +343,18 @@ Ternary Operators * ``foo ?: 'no'`` (equal to ``foo ? foo : 'no'``) * ``foo ? 'yes'`` (equal to ``foo ? 'yes' : ''``) +Null-coalescing Operator +~~~~~~~~~~~~~~~~~~~~~~~~ + +This is the same as the PHP's null-coalescing operator ``??`` which is a syntactic sugar for the use of a ternary +in conjunction with isset(). It returns the left hand-side if it exist and not ``null`` otherwise it returns the right hand-side. +Note that coalescing can be chained. + +* ``foo ?? 'no'`` +* ``foo.baz ?? 'no'`` +* ``foo[3] ?? 'no'`` +* ``foo.baz ?? foo['baz'] ?? 'no'`` + Built-in Objects and Variables ------------------------------