Saltar al contenido principal

Reglas de tipos mixtos

No hay conversión implícita general. Cada operador tiene una lista breve de combinaciones de tipos que entiende. Cualquier otra combinación no genera un error: da en silencio Integer 0 (o false en una comparación de orden) y el script sigue ejecutándose. Es deliberado, para que un valor extraño no interrumpa una acción a la mitad. También significa que una expresión con tipos equivocados falla en silencio, así que compruébela con UtilityPrint cuando un resultado parezca incorrecto.

OperadorCombinaciones aceptadas → resultadoCualquier otra
+Text + Text → Text (concatenación)
Integer + Integer → Integer
mezcla de Integer y Real → Real
0
- *Integer ∘ Integer → Integer
mezcla de Integer y Real → Real
0
/Integer / Integer → Integer, truncado hacia cero (-7 / 2 es -3)
mezcla de Integer y Real → Real
división entre cero → 0 o 0.0, sin error
0
== !=mismo tipo → se comparan por valor (Text de forma exacta y distinguiendo mayúsculas de minúsculas, Window por identificador)
Integer frente a Real → se comparan numéricamente (5 == 5.0)
nunca son iguales: 1 == true, "5" == 5 y w == 0 son todos false
< <= > >=dos números (se admite la mezcla de Integer y Real) → orden numérico
Text frente a Text → ordinal, distingue mayúsculas de minúsculas (unidades de código UTF-16: "Z" < "a")
false para los cuatro, así que aquí !(a < b) no significa a >= b
&& || !cualquier tipo, según su veracidad → Bool
& | ^Integer ∘ Integer → Integer0 (un operando Bool o Real cuenta: true & true es 0)
<< >>Integer desplazado por un Integer de 0 a 63 → Integer. >> conserva el signo: -16 >> 2 es -4.0, incluidas las cantidades de desplazamiento menores que 0 o mayores que 63
- unarioInteger → Integer, Real → Real0
~Integer → Integer (~0 es -1)0

Convertir entre tipos:

De → ACómo
Integer → Realautomático al pasarlo a un parámetro de función integrada declarado como Real; en otros casos, n * 1.0 (cualquier operación aritmética con un Real da un Real)
Real → IntegerMathRound(r) (las mitades se alejan de cero), MathFloor(r) o MathCeil(r)
cualquier tipo → TextStringFormat("{0}", value, "")
Bool → Integerif (b) n = 1; else n = 0;
Text → númeroStringToNumber(text, false) para lo que escribió una persona (en su formato regional; los grupos de dígitos deben seguirlo, así que 1,5 no es un número para un usuario de español (México)), true para texto de máquina (punto . decimal, sin separadores de miles). Integer si es entero, si no Real; use antes StringIsNumber si el texto podría no ser un número (consulte este ejemplo).
número → TextStringFromNumber(n, decimals, invariantCulture), con decimals en -1 para usar tantos como hagan falta
Integer → Text hexadecimalninguna función integrada lo hace. Constrúyalo con desplazamientos (consulte este ejemplo).