ArithmeticExpression

Es una colección de funciones y operaciones aritméticas que usan otros elementos de Formato de Caras de Relojes para resolver valores de atributos y efectos giroscópicos en tiempo real.

Se introdujo en Wear OS 4.

Ejemplo

Una expresión de ejemplo para rotar un valor hasta 5 grados en cualquier dirección, según el valor $ x $ del acelerómetro del dispositivo Wear OS:

(5/90)*clamp([ACCELEROMETER_ANGLE_X],0,90) + (-5/90)*clamp([ACCELEROMETER_ANGLE_X],-90,0)

Eso equivale a la siguiente expresión matemática, donde $ \theta_x $ representa el ángulo de acelerómetro en la dirección $ x $:

$$ \frac{5}{90} * max(min(\theta_x, 90), -90) $$

Funciones

El Formato de Caras de Relojes reconoce los siguientes valores de cadena como funciones:

Función Descripción Tipo de datos que se muestra Disponibilidad
round() Convierte el valor de entrada en un valor de punto flotante y, luego, realiza el round() operación matemática. Entero Versión 1
floor() Realiza la operación matemática estándar de floor(). Flotante Versión 1
ceil() Realiza la operación matemática estándar de ceil(). Flotante Versión 1
fract() Muestra la parte fraccionaria del valor de entrada; es decir, la parte del un valor de punto flotante que aparece a la derecha del punto decimal. Flotante Versión 1
sin() Realiza la operación trigonométrica estándar de sin(). Flotante Versión 1
cos() Realiza la operación trigonométrica estándar de cos(). Flotante Versión 1
tan() Realiza la operación trigonométrica estándar de tan(). Flotante Versión 1
asin() Realiza la operación trigonométrica estándar de asin(). El valor devuelto siempre está en el rango $ [-\frac{\pi}{2}, \frac{\pi}{2}] $. Flotante Versión 1
acos() Realiza la operación trigonométrica estándar de acos(). El valor devuelto siempre está en el rango $ [0.0, \pi] $. Flotante Versión 1
atan() Realiza la operación trigonométrica estándar de atan(). El valor devuelto siempre está en el rango $ [-\frac{\pi}{2}, \frac{\pi}{2}] $. Flotante Versión 1
abs() Convierte el valor de entrada en un valor de punto flotante y, luego, realiza el abs() operación matemática. Flotante Versión 1
clamp(,,) Convierte los valores de entrada en valores de punto flotante y, luego, realiza la clamp() Operación de Jetpack para que se ajuste al primer valor en el rango definido por el segundo y el tercer valor. Flotante Versión 1
rand(,) Genera un valor de punto flotante aleatorio que cumple con las siguientes condiciones. al mismo tiempo:
  • Mayor o igual que el primer valor
  • Menor o igual que el segundo valor
Supone que el primer valor es menor o igual que el segundo.
Flotante Versión 1
log() Realiza la operación matemática estándar base-$ e $ log(). Flotante Versión 1
log2() Simula un logaritmo en base 2. Este valor se calcula dividiendo la base 10 log() del valor de entrada) por el logaritmo en base 10 de $ 2 $. Flotante Versión 1
log10() Realiza la operación matemática estándar en base 10 log(). Flotante Versión 1
sqrt() Realiza la operación matemática estándar de sqrt(). Flotante Versión 1
cbrt() Realiza la operación matemática estándar de cbrt(). Flotante Versión 1
exp() Realiza la operación matemática estándar de exp(). Flotante Versión 1
expm1() Llama directamente a la operación matemática de expm1() si el valor de entrada es $ 1 $. Para cualquier otro valor de entrada, simula la función mediante la operación matemática estándar de exp() y, luego, resta 1. Flotante Versión 1
deg() Realiza la operación matemática estándar de toDegrees(). $ \frac{\pi}{2} $ se define como 90 grados y $ \pi $ se define como 180 grados. Flotante Versión 1
rad() Realiza la operación matemática estándar de toRadians(). 90 grados se define como $ \frac{\pi}{2} $ y 180 grados se define como $ \pi $. Flotante Versión 1
pow(,) Realiza la operación matemática estándar de pow(). El valor de salida siempre es un número de punto flotante. Flotante Versión 1
numberFormat(,) Aplica el formato de número en el primer valor al segundo valor. El primer valor puede contener los siguientes caracteres:
  • #: Representa un dígito numérico.
  • ,: Representa un separador de coma en números grandes.
  • .: Representa un punto decimal.
String Versión 1
icuText()

Convierte la cadena de formato de fecha de entrada en un patrón que coincida con el formato de configuración regional esperado. Si el elemento PartText superior incluye un elemento Localization, se usa el formato de esa configuración regional. De lo contrario, usa la configuración regional actual del dispositivo Wear OS.

Por ejemplo, si el dispositivo se usa en Estados Unidos, un valor de entrada de EE, MMM d, yyyy h:mm a produce el siguiente resultado: Tue, Mar 14, 2023 1:59 PM

String Versión 1
icuText(,)

Convierte el primer argumento input date format string en un patrón que coincida con el formato de configuración regional esperado. El segundo argumento es una cadena de marca de tiempo en milisegundos.

Si el elemento PartText superior incluye un Localization, se usa el formato de esa configuración regional. De lo contrario, usa la configuración regional actual del dispositivo Wear OS.

String Versión 2
icuBestText()

Convierte la cadena de formato de fecha de entrada a la hora actual cuyo patrón coincide con el formato esperado. Si el elemento PartText superior incluye un elemento Localization, se usa el formato de esa configuración regional. De lo contrario, usa la configuración regional actual del dispositivo Wear OS.

Por ejemplo, si el dispositivo se usa en Estados Unidos el 14 de marzo de 2023 a las 1:59 p.m., un valor de entrada de yyyy MMM d EE a h:mm produce lo siguiente: resultado: Tue, Mar 14, 2023, 1:59 PM

String Versión 1
icuBestText(,)

Convierte el primer argumento input date format string a la hora actual cuyo patrón coincide con el formato esperado. El segundo argumento es una cadena de marca de tiempo en milisegundos.

Si el elemento PartText superior incluye un Localization, se usa el formato de esa configuración regional. De lo contrario, usa la configuración regional actual del dispositivo Wear OS.

String Versión 2
subText(,,)

Extrae una subcadena del primer valor. El segundo valor indica el índice basado en 0 en el primer valor donde debe comenzar la subcadena. El tercer valor indica el índice basado en 0 en el primer valor donde la extracción de subcadena debe detenerse ("desde el segundo valor hasta el tercer valor, pero sin incluirlo").

Ejemplos:
  • subText("abc def", 2, 5) es c d.
  • subText("abc def", 2, 7) es c def.
String Versión 1
textLength()

Calcula la longitud de la cadena de entrada.

Ejemplos:
  • textLength("") es 0.
  • textLength("abcdef") es 6.
String Versión 1

Operadores

El Formato de Caras de Relojes reconoce los siguientes valores de cadena como operadores:

+
Unario más, o bien la adición de varios valores. Admite números enteros y valores de punto flotante.
-
Unario menos, o bien la resta de varios valores. Admite números enteros y valores de punto flotante.
*
Multiplicación de varios valores de número entero o de punto flotante.
/

División de 2 valores de número entero o de punto flotante.

Si la división de 2 números enteros da como resultado un valor que no es un número entero, la parte decimal se conserva en el resultado de punto flotante. Por ejemplo, $ \frac{1}{2} = 0.5 $.

Además, la expresión $ \frac{x}{0} $ se evalúa como 0, donde $ x $ es cualquier número entero.

%

División modular de 2 valores de número entero o de punto flotante.

Si ambos operandos son números enteros, el resultado es el de la división de los 2 valores. Por ejemplo, $ 19 \bmod 7 = 5 $.

Si al menos un operando es un número de punto flotante, el resultado es un equivalente de punto flotante del resto; por ejemplo: $ 19.0 \bmod 7 = 5.0 $.

~

Operador "not" a nivel de bits. Varios ejemplos:

  • ~1 es $ -2 $.
  • ~0 es $ -1 $.
!

Operador lógico "not", que admite la doble negación. Varios ejemplos:

  • $ !2 $ es false.
  • $ !!0 $ es true.
|

Operador "or" a nivel de bits. Admite más de 2 valores de entrada. Varios ejemplos:

  • $ 1 | 0 = 1 $
  • $ 1 | 2 | 4 = 7 $
||
Operador lógico "or".
&
Operador "and" a nivel de bits. Admite exactamente 2 valores de entrada.
&&
Operador lógico "and".
(
Paréntesis de apertura. Se usa para cambiar el orden estándar de las operaciones, en el que la multiplicación y la división suelen tener prioridad sobre la suma y la resta.
)
Paréntesis de cierre. Se usa para cambiar el orden estándar de las operaciones, en el que la multiplicación y la división suelen tener prioridad sobre la suma y la resta.
<
El operador de comparación "menor que". Cuando se compara un valor de número entero con su equivalente de punto flotante, el resultado es false.
<=
El operador de comparación "menor o igual que". Cuando se compara un valor de número entero con su equivalente de punto flotante, el resultado es true.
>
El operador de comparación "mayor que". Cuando se compara un valor de número entero con su equivalente de punto flotante, el resultado es false.
>=
El operador de comparación "mayor o igual que". Cuando se compara un valor de número entero con su equivalente de punto flotante, el resultado es true.
? y :

Proporciona asistencia para operaciones ternarias. El formato general es el siguiente:

condition ? value_if_true : value_if_false

Admite operaciones ternarias anidadas con paréntesis.

,

Separa los valores en las funciones que tienen más de 1 argumento.

"

Cuando se coloca al principio y al final de un valor, indica que el Formato de Caras de Relojes debe interpretar el valor como una cadena.

==

Realiza una comparación de igualdad. Cuando se compara un valor de número entero con su equivalente de punto flotante, el resultado es true.

!=

Realiza una comparación de desigualdad. Cuando se compara un valor de número entero con su equivalente de punto flotante, el resultado es false.