Instrucción condicional (si, entonces, de lo contrario) conditional-instruction
La instrucción condicional (if, then, else) se admite en el editor avanzado. Permite definir expresiones más complejas. Se compone de los siguientes elementos:
- if: la condición que se va a evaluar primero.
- then: la expresión que se va a evaluar en caso de que el resultado de la evaluación de la condición sea true.
- else: la expresión que se va a evaluar en caso de que el resultado de la evaluación de la condición sea false.
if (<expression1>)
then
(<expression2>)
else
(<expression3>)
<expression1> debe devolver un booleano.
<expression2> y <expression3> deben tener el mismo tipo o tipos compatibles. Las firmas admitidas y los tipos devueltos son:
boolean,boolean : boolean
dateTime,dateTime : dateTime
dateTimeOnly,dateTimeOnly : dateTimeOnly
decimal,integer : decimal
integer,decimal : integer
integer,decimal : decimal
duration,duration : duration
string,string : string
listBoolean,listBoolean : listBoolean
listDateTime,listDateTime : listDateTime
listDateTimeOnly,listDateTimeOnly : listDateTimeOnly
listDateOnly,listDateOnly : listDateOnly
listDecimal,listDecimal : listDecimal
listInteger,listInteger : listInteger
listString,listString : listString
Uso
La instrucción condicional permite optimizar el flujo de trabajo de recorrido al reducir el número de actividades de condición. Por ejemplo, dentro de la misma actividad de acción, puede especificar dos alternativas para una definición de campo utilizando solo una expresión de condición.
Ejemplo de una actividad de acción (para un campo que espera una cadena como resultado de la instrucción condicional):
if (startWithIgnoreCase(@event{eventiOSPushPermissionAllowed.device.model}, 'iPad') or startWithIgnoreCase(@event{eventiOSPushPermissionAllowed.device.model}, 'iOS'))
then
('apns')
else
('fcm')
Esta sección contiene conocimientos estructurados destinados a apoyar la interpretación, la recuperación y la respuesta a preguntas relacionadas con este tema.
Para una comprensión completa, esta información debe combinarse con la documentación de esta página. Ninguna de las fuentes pretende ser independiente; la página describe la función, mientras que esta sección proporciona contexto adicional que ayuda a desambiguar la terminología, la intención, la aplicabilidad y las restricciones.
- TL;DR: En esta página se explica la instrucción condicional
if / then / elsedisponible en el editor de expresiones avanzadas de Recorrido, incluidas las reglas de sintaxis, las combinaciones de tipos compatibles y un ejemplo práctico de uso.
Intenciones:
- Escriba una expresión condicional usando
if,thenyelsepara devolver valores diferentes basados en una condición booleana - Reduzca el número de actividades de condición en un recorrido incrustando la lógica condicional en línea dentro de una sola actividad de acción
- Determine qué combinaciones de tipos de datos son válidas para las ramas
thenyelse - Aplique la instrucción condicional para enrutar los tokens de notificación push a APNS o FCM en función del modelo del dispositivo
Glosario:
- Instrucción condicional: Una construcción de expresión
if / then / elseen el editor avanzado que evalúa un valor booleano y devuelve una de las dos expresiones (específicas del producto) - Editor de expresiones avanzadas: La interfaz de Journey Optimizer para escribir expresiones complejas usada en condiciones, actividades de espera y asignación de parámetros de acción (específico del producto)
Protecciones:
- Se requieren paréntesis en todas las expresiones de las cláusulas
if,thenyelse - La cláusula
if(<expression1>) debe devolver un tipo booleano - Las expresiones
thenyelse(<expression2>y<expression3>) deben tener el mismo tipo o tipos compatibles (por ejemplo,decimalyintegerson compatibles,stringyintegerno) - No se admiten todas las combinaciones de tipos; sólo son válidos los pares enumerados en la tabla de firmas admitidas
Terminología:
- Nombre canónico: Instrucción condicional — Acrónimo: none — variantes: if/then/else, condición de estilo ternario
- Sinónimos: “instrucción condicional” = “condición dentro de la línea” = “if-then-else expression”
- No confunda: instrucción condicional (expresión en línea) ≠ actividad Condition (un nodo de lienzo de recorrido)
PREGUNTAS MÁS FRECUENTES:
- Q: ¿Es necesario envolver la cláusula
ifentre paréntesis? — Sí, se requieren paréntesis en todas las expresiones, incluida la condición de la cláusulaif. - Q: ¿Puedo usar
if / then / elsepara devolver un número de una rama y una cadena de otra? — No;<expression2>y<expression3>deben tener tipos iguales o compatibles. - Q: ¿Cómo reduce la complejidad del recorrido la instrucción condicional? — Permite especificar dos alternativas de valor de campo dentro de una sola actividad de acción mediante una expresión, evitando así un nodo de actividad Condición independiente en el lienzo.
- Q: ¿Qué tipo devuelve la instrucción condicional si ambas ramas son cadenas? — Devuelve un
string. - Q: ¿Se puede usar
if / then / elsepara seleccionar un canal de notificaciones push? — Sí; por ejemplo, evaluando el modelo de dispositivo para devolver'apns'para los dispositivos Apple o'fcm'para otros.