ArithmeticExpression

一系列算术函数和运算,其他表盘格式元素利用其解析实时属性值和陀螺效应。

此元素在 Wear OS 4 中推出。

示例

以下示例表达式基于 Wear OS 设备加速度计的 $ x $ 值,用于在任一方向上将某个值旋转最多 5 度:

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

…此表达式相当于以下数学表达式,其中 $ \theta_x $ 表示 $ x $ 方向上的加速度计角度:

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

函数

表盘格式将以下字符串值识别为函数:

round()
将输入值转换为浮点值,然后执行标准的 round() 数学运算。
floor()
执行标准的 floor() 数学运算。
ceil()
执行标准的 ceil() 数学运算。
fract()
返回输入值的小数部分;即,显示在小数点右侧的浮点值部分。
sin()
执行标准的 sin() 三角函数运算。
cos()
执行标准的 cos() 三角函数运算。
tan()
执行标准的 tan() 三角函数运算。
asin()
执行标准的 asin() 三角函数运算。返回的值始终在 $ [-\frac{\pi}{2}, \frac{\pi}{2}] $ 的范围内。
acos()
执行标准的 acos() 三角函数运算。返回的值始终在 $ [0.0, \pi] $ 的范围内。
atan()
执行标准的 atan() 三角函数运算。返回的值始终在 $ [-\frac{\pi}{2}, \frac{\pi}{2}] $ 的范围内。
abs()
将输入值转换为浮点值,然后执行标准的 abs() 数学运算。
clamp(,,)
将输入值转换为浮点值,然后执行 clamp() Jetpack 运算,以便使第一个值符合第二个值和第三个值所定义的范围。
rand(,)

生成同时满足以下条件的随机浮点值:

  • 大于或等于第一个值。
  • 小于或等于第二个值。

假设第一个值小于或等于第二个值。

log()

执行标准的以 $ e $ 为底数的 log() 数学运算。

log2()

模拟以 2 为底的对数。此值的计算方法为:用以 10 为底数的对数(输入值的 log10)除以 $ 2 $ 的以 10 为底数的对数。

log10()

执行标准的以 10 为底数的 log10 数学运算。

sqrt()

执行标准的 sqrt() 数学运算。

cbrt()

执行标准的 cbrt() 数学运算。

exp()

执行标准的 exp() 数学运算。

expm1()

如果输入值为 $ 1 $,则直接调用 expm1() 数学运算。对于任何其他输入值,执行标准的 exp() 数学运算,然后减去 1,从而模拟相应函数。

deg()

执行标准的 toDegrees() 数学运算。 $ \frac{\pi}{2} $ 定义为 90 度,$ \pi $ 则定义为 180 度。

rad()

执行标准的 toRadians() 数学运算。90 度定义为 $ \frac{\pi}{2} $,180 度则定义为 $ \pi $。

pow(,)

执行标准的 pow() 数学运算。输出值始终是浮点数。

numberFormat(,)

将第一个值中的数字格式应用于第二个值。

第一个值可以包含以下字符:

  • # - 表示数位。
  • , - 表示多位数字中的逗号分隔符。
  • . - 表示小数点。
icuText()

输入日期格式字符串转换为与预期语言区域格式匹配的模式。如果父 PartText 元素包含 Localization 元素,则系统会使用该语言区域的格式。否则,请改用 Wear OS 设备的当前语言区域。

例如,如果在美国使用设备,则 EE, MMM d, yyyy h:mm a 的输入值会生成以下输出:Tue, Mar 14, 2023 1:59 PM

icuBestText()

输入日期格式字符串转换为模式与预期格式匹配的当前时间。如果父 PartText 元素包含 Localization 元素,则系统会使用该语言区域的格式。否则,请改用 Wear OS 设备的当前语言区域。

例如,如果于 2023 年 3 月 14 日下午 1:59 在美国使用设备,则 yyyy MMM d EE a h:mm 的输入值会生成以下输出:Tue, Mar 14, 2023, 1:59 PM

subText(,,)

从第一个值中提取子字符串。第二个值表示第一个值中应作为子字符串起始点的索引(从 0 开始计数)。第三个值表示第一个值中应作为子字符串提取结束点的索引(从 0 开始计数;“从第二个值起,到第三个值终,但不包含第三个值”)。

示例:

  • subText("abc def", 2, 5)c d
  • subText("abc def", 2, 7)c def
textLength()

计算输入字符串的长度。

运算符

表盘格式将以下字符串值识别为运算符:

+
一元加号,或多个值相加。同时支持整数和浮点值。
-
一元减法,或多个值相减。同时支持整数和浮点值。
*
多个整数值或浮点值相乘。
/

2 个整数或浮点值相除。

如果 2 个整数相除的结果为非整数值,则浮点结果将保留小数部分。例如,$ \frac{1}{2} = 0.5 $。

此外,表达式 $ \frac{x}{0} $ 的求值结果为 0,其中 $ x $ 为任意整数。

%

2 个整数或浮点值的模除。

如果两个运算数均为整数,则结果为这两个值相除的余数。例如,$ 19 \bmod 7 = 5 $。

如果至少一个运算数为浮点数,则结果为与余数对等的浮点值;例如,$ 19.0 \bmod 7 = 5.0 $。

~

按位“非”运算符。示例如下:

  • ~1 为 $ -2 $
  • ~0 为 $ -1 $
!

逻辑“非”运算符,支持双重否定。示例如下:

  • $ !2 $ 为 false
  • $ !!0 $ 为 true
|

按位“或”运算符。支持 2 个以上的输入值。示例如下:

  • $ 1 | 0 = 1 $
  • $ 1 | 2 | 4 = 7 $
||
逻辑“或”运算符。
&
按位“与”运算符。仅支持 2 个输入值。
&&
逻辑“与”运算符。
(
左圆括号。用于更改标准运算的顺序,其中乘法和除法通常优先于加法和减法。
)
右圆括号。用于更改标准运算的顺序,其中乘法和除法通常优先于加法和减法。
<
“小于”比较运算符。比较整数值与对等的浮点值时,结果为 false
<=
“小于或等于”比较运算符。比较整数值与对等的浮点值时,结果为 true
>
“大于”比较运算符。比较整数值与对等的浮点值时,结果为 false
>=
“大于或等于”比较运算符。比较整数值与对等的浮点值时,结果为 true
?”和“:

支持三元运算。常规格式如下:

condition ? value_if_true : value_if_false

支持使用括号进行嵌套三元运算。

,

对接受多个参数的函数中的值进行分隔。

"

放置在值的开头和结尾时,表示表盘格式应将值解读为字符串。

==

比较是否相等。比较整数值与对等的浮点值时,结果为 true

!=

比较是否不等。比较整数值与对等的浮点值时,结果为 false