??
Gibt an, ob der Wert des linken Operanden fehlt (dh es handelt sich um Java null
oder Sie haben dort eine undefinierte Variable), und gibt entsprechend zurück false
(fehlt) oder true
(fehlt nicht).
?has_content
ist sehr ähnlich ??
, außer dass es auch false
für eine Zeichenfolge mit 0-Länge oder eine leere FTL-Sequenz (wie java.util.List
, Java-Array usw.) oder einen leeren FTL-Hash (wie java.util.Map
usw.) zurückgegeben wird. (Es wird nicht false
für a 0
, boolean false
usw. zurückgegeben.)
!
wird verwendet, um einen Standardwert anzugeben, wenn ein Wert fehlt (bedeutet wiederum, dass es sich um Java handelt null
oder Sie eine undefinierte Variable haben), wie z color!"no color"
. Wenn Sie die rechte Hand Operanden weglassen !
, dann wird der Standardwert ist eine leere Zeichenfolge und leere Sequenz und leerer Hash auf die gleiche Zeit (ein Multi-typisierten Wert), die für das Schreiben Dinge praktisch ist , wie <#list things! as thing>
, ${foo!}
.
?if_exists
ist die alte Schreibweise ??
. Benutze es nicht.
Beachten Sie, dass alle diese Operatoren nur den letzten Schritt eines Punkts oder []
Ausdrucks abdecken , z. B. user.price!0
nur Handles, wenn sie price
fehlen user
, aber nicht, wenn sie user
selbst fehlen. Um beide Möglichkeiten abzudecken, verwenden Sie (user.price)!0
, die alle fehlenden variablen Fehler behandelt, die während der Auswertung der ausgelöst werden ()
, unabhängig davon, woher sie stammen.