|
|
|
|
@ -1,10 +1,10 @@
@@ -1,10 +1,10 @@
|
|
|
|
|
[[expressions-operator-elvis]] |
|
|
|
|
= The Elvis Operator |
|
|
|
|
|
|
|
|
|
The Elvis operator is a shortening of the ternary operator syntax and is used in the |
|
|
|
|
https://www.groovy-lang.org/operators.html#_elvis_operator[Groovy] language. With the |
|
|
|
|
ternary operator syntax, you often have to repeat a variable twice, as the following |
|
|
|
|
Java example shows: |
|
|
|
|
The Elvis operator (`?:`) is a shortening of the ternary operator syntax and is used in |
|
|
|
|
the https://www.groovy-lang.org/operators.html#_elvis_operator[Groovy] language. With the |
|
|
|
|
ternary operator syntax, you often have to repeat a variable twice, as the following Java |
|
|
|
|
example shows: |
|
|
|
|
|
|
|
|
|
[source,java,indent=0,subs="verbatim,quotes"] |
|
|
|
|
---- |
|
|
|
|
@ -23,7 +23,7 @@ Java::
@@ -23,7 +23,7 @@ Java::
|
|
|
|
|
---- |
|
|
|
|
ExpressionParser parser = new SpelExpressionParser(); |
|
|
|
|
|
|
|
|
|
String name = parser.parseExpression("name?:'Unknown'").getValue(new Inventor(), String.class); |
|
|
|
|
String name = parser.parseExpression("name ?: 'Unknown'").getValue(new Inventor(), String.class); |
|
|
|
|
System.out.println(name); // 'Unknown' |
|
|
|
|
---- |
|
|
|
|
|
|
|
|
|
@ -33,7 +33,7 @@ Kotlin::
@@ -33,7 +33,7 @@ Kotlin::
|
|
|
|
|
---- |
|
|
|
|
val parser = SpelExpressionParser() |
|
|
|
|
|
|
|
|
|
val name = parser.parseExpression("name?:'Unknown'").getValue(Inventor(), String::class.java) |
|
|
|
|
val name = parser.parseExpression("name ?: 'Unknown'").getValue(Inventor(), String::class.java) |
|
|
|
|
println(name) // 'Unknown' |
|
|
|
|
---- |
|
|
|
|
====== |
|
|
|
|
@ -58,11 +58,11 @@ Java::
@@ -58,11 +58,11 @@ Java::
|
|
|
|
|
EvaluationContext context = SimpleEvaluationContext.forReadOnlyDataBinding().build(); |
|
|
|
|
|
|
|
|
|
Inventor tesla = new Inventor("Nikola Tesla", "Serbian"); |
|
|
|
|
String name = parser.parseExpression("name?:'Elvis Presley'").getValue(context, tesla, String.class); |
|
|
|
|
String name = parser.parseExpression("name ?: 'Elvis Presley'").getValue(context, tesla, String.class); |
|
|
|
|
System.out.println(name); // Nikola Tesla |
|
|
|
|
|
|
|
|
|
tesla.setName(""); |
|
|
|
|
name = parser.parseExpression("name?:'Elvis Presley'").getValue(context, tesla, String.class); |
|
|
|
|
name = parser.parseExpression("name ?: 'Elvis Presley'").getValue(context, tesla, String.class); |
|
|
|
|
System.out.println(name); // Elvis Presley |
|
|
|
|
---- |
|
|
|
|
|
|
|
|
|
@ -74,11 +74,11 @@ Kotlin::
@@ -74,11 +74,11 @@ Kotlin::
|
|
|
|
|
val context = SimpleEvaluationContext.forReadOnlyDataBinding().build() |
|
|
|
|
|
|
|
|
|
val tesla = Inventor("Nikola Tesla", "Serbian") |
|
|
|
|
var name = parser.parseExpression("name?:'Elvis Presley'").getValue(context, tesla, String::class.java) |
|
|
|
|
var name = parser.parseExpression("name ?: 'Elvis Presley'").getValue(context, tesla, String::class.java) |
|
|
|
|
println(name) // Nikola Tesla |
|
|
|
|
|
|
|
|
|
tesla.setName("") |
|
|
|
|
name = parser.parseExpression("name?:'Elvis Presley'").getValue(context, tesla, String::class.java) |
|
|
|
|
name = parser.parseExpression("name ?: 'Elvis Presley'").getValue(context, tesla, String::class.java) |
|
|
|
|
println(name) // Elvis Presley |
|
|
|
|
---- |
|
|
|
|
====== |
|
|
|
|
|