Operadores
Los símbolos que hacen cuentas, comparan y deciden. Incluido el que te deja poner un valor por defecto sin escribir un solo if.
✓ En esta sub-lección
- 01No volver a confundir = con ==.
- 02Combinar condiciones con && y || y aprovechar que se evalúan en corto.
- 03Sustituir un valor ausente por uno por defecto con el operador condicional.
La nutria: ¿Te acuerdas? · Repaso de la lección 6
Region__c viene vacío. ¿Qué pasa con incompleteLead.Region__c.toUpperCase()?
Una regla de validación es una expresión con operadores: AND(ISBLANK(Region__c), NOT(ISPICKVAL(Status, 'Closed'))). Ya sabes razonar así. Apex usa los mismos conceptos con símbolos más cortos, y añade uno que en fórmulas conocías como IF().
stage vale →'Prospecting'
Paso 1 de 4
Partimos de una oportunidad en fase Prospecting. Un solo igual GUARDA un valor en la variable.
Aritméticos
Suma, resta, multiplicación y división. Y una ausencia que sorprende a quien viene de otros lenguajes: Apex no tiene operador de módulo. Para el resto de una división se usa el método Math.mod().
Decimal amount = 1000;
Decimal withTax = amount * 1.21;
Decimal perQuarter = amount / 4;
Integer remainder = Math.mod(17, 5); // 2: no existe el operador %También existen las formas abreviadas: amount += 100 significa exactamente amount = amount + 100. Funcionan con +=, -=, *= y /=, y se leen mejor cuando la variable es larga.
Comparación: uno o dos iguales
Un solo igual asigna: pone un valor dentro de una variable. Dos iguales comparan: preguntan si dos cosas valen lo mismo y devuelven un Boolean. Es el error de tecleo más caro del lenguaje, porque a veces compila igualmente.
| Operador | Pregunta | Devuelve |
|---|---|---|
| == != | ¿Son iguales? ¿Son distintos? | Boolean |
| < > <= >= | ¿Es menor, mayor…? | Boolean |
| && | ¿Se cumplen las dos? | Boolean |
| || | ¿Se cumple al menos una? | Boolean |
| ! | Lo contrario de… | Boolean |
Decimal amount = 25000;
String stage = 'Closed Won';
Boolean isBigDeal = amount >= 20000;
Boolean isWon = stage == 'Closed Won';
Boolean celebrate = isBigDeal && isWon;
Boolean pending = !isWon;Evaluación en corto: tu red de seguridad
Apex evalúa && de izquierda a derecha y para en cuanto sabe la respuesta. Si la primera condición es falsa, la segunda ni se mira. Eso convierte al && en la forma idiomática de protegerse de un null: primero compruebas que existe, después lo usas.
String region = null;
// Seguro: si el primero es false, el segundo no llega a ejecutarse
Boolean isEmea = region != null && region.toUpperCase() == 'EMEA';
// Peligroso: el orden invertido explota
Boolean broken = region.toUpperCase() == 'EMEA' && region != null;String region = null;
region != null…region.toUpperCase() == 'EMEA'…Boolean isEmea =?
Paso 1 de 4
region vale null. Apex lee la condición de izquierda a derecha.
La nutria: Como las condiciones de entrada de un Flow
El operador condicional: IF() en una línea
Se escribe condición ? valorSiVerdadero : valorSiFalso, y es una expresión: produce un valor que puedes guardar directamente en una variable. Es el equivalente exacto de IF() en una fórmula, y resuelve el problema que dejó abierto la sub-lección anterior: qué poner cuando falta el dato.
String region = incompleteLead.Region__c;
// En fórmulas: BLANKVALUE(Region__c, 'Sin región')
String displayRegion = String.isBlank(region) ? 'Sin región' : region;
Decimal amount = opp.Amount;
Decimal safeAmount = amount == null ? 0 : amount;La nutria: Lo mismo que hacías en el campo fórmula