除法运算符

2022-01-05 09:56:45 浏览数 (1)

除法运算符 ( x / y)的解释取决于求值表达式x和的值类型y,如下所示:

X

结果

解释

type number

type number

type number

数商

type number

null

null

null

type number

null

type duration

type number

type duration

持续时间的分数

type duration

type duration

type duration

持续时间的数商

type duration

null

null

null

type duration

null

对于表中所列值以外的其他值组合,将"Expression.Error"引发带有原因代码的错误。以下各节介绍了每种组合。

传播评估任一操作数时引发的错误。

数商

使用除法运算符计算两个数字的,产生一个数字。例如:

复制

代码语言:javascript复制
8 / 2               // 4 
8 / 0               // #infinity 
0 / 0               // #nan 
0 / null            // null 
#nan / #infinity    // #nan

/数字上的除法运算符使用双精度;标准库函数Value.Divide可用于指定小数精度。计算数字的商时,以下内容成立:

  • 双精度中的商是根据 64 位二进制双精度 IEEE 754 算术IEEE 754-2008的规则计算的。下表列出了非零有限值、零、无穷大和 NaN 的所有可能组合的结果。在表中,xy是正的有限值。z是 的结果x / y。如果结果对于目标类型来说太大,z则为无穷大。如果结果对于目标类型来说太小,z则为零。 表 13/ y-y 0-0 ∞-∞NaN x z-z ∞-∞ 0-0NaN-X-z z-∞ ∞-0 0NaN 0 0-0NaNNaN 0-0NaN-0-0 0NaNNaN-0 0NaN ∞-∞ ∞-∞NaNNaNNaN-∞-∞ ∞-∞ ∞NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
  • Decimal Precision 中的总和是在不损失精度的情况下计算的。结果的标度是两个操作数的标度中较大的一个。
持续时间的商

两个持续时间的商是代表持续时间所代表的100纳秒滴答数的商的数字。例如:

复制

代码语言:javascript复制
#duration(2,0,0,0) / #duration(0,1,30,0) 
// 32
缩放持续时间

持续时间x和数字y的商是持续时间代表的持续时间和数字所代表的 100 纳秒滴答x数的商y。例如:

复制

代码语言:javascript复制
#duration(2,0,0,0) / 32 
// #duration(0,1,30,0)

结构组合

组合运算符 ( x & y) 定义在以下类型的值上:

X

结果

解释

type text

type text

type text

级联

type text

null

null

null

type text

null

type date

type time

type datetime

合并

type date

null

null

null

type time

null

type list

type list

type list

级联

type record

type record

type record

合并

type table

type table

type table

级联

级联

可以使用 连接两个文本、两个列表或两个表值x & y

以下示例说明了连接文本值:

复制

代码语言:javascript复制
"AB" & "CDE"     // "ABCDE"

以下示例说明了连接列表:

复制

代码语言:javascript复制
{1, 2} & {3}     // {1, 2, 3}

使用 连接两个值时,以下内容成立x & y

  • 传播计算xory表达式时引发的错误。
  • 如果x或的项目y包含错误,则不会传播错误。
  • 连接两个文本值的结果是一个文本值,其中包含紧跟其后的 x 值。如果其中一个操作数为空而另一个为文本值,则结果为空。
  • 连接两个列表的结果是一个列表,其中包含 的所有项,x后跟 的所有项y
  • 连接两个表的结果是一个表,该表具有两个操作数表的列的并集。的列顺序x被保留,然后是只出现在 中的列y,保留它们的相对顺序。对于仅出现在一个操作数中的列,null用于填充另一个操作数的单元格值。

合并

记录合并

可以使用 合并两条记录x & y,从而生成包含来自x和 的字段的记录y

以下示例说明了合并记录:

复制

代码语言:javascript复制
[ x = 1 ] & [ y = 2 ]                // [ x = 1, y = 2 ] 
[ x = 1, y = 2 ] & [ x = 3, z = 4 ]  // [ x = 3, y = 2, z = 4 ]

使用 合并两条记录时,以下内容成立x y

  • 传播计算xory表达式时引发的错误。
  • 如果字段同时出现在x和 中yy则使用值 from 。
  • 结果记录中字段的顺序是x,然后y是不属于 的字段,其x顺序与它们出现的顺序相同y
  • 合并记录不会导致对值的评估。
  • 由于字段包含错误,因此不会引发错误。
  • 结果是一个记录。
日期时间合并

一个日期x可以与时间合并y使用x & y,产生组合来自两个部件中的日期时间xy

以下示例说明了合并日期和时间:

复制

代码语言:javascript复制
#date(2013,02,26) & #time(09,17,00) 
// #datetime(2013,02,26,09,17,00)

使用 合并两条记录时,以下内容成立x y

  • 传播计算xory表达式时引发的错误。
  • 结果是日期时间。

一元运算符

-not运营商一元运算符。

一元表达式:       类型表达式 一元表达式 - 一元表达式 not 一元表达式

一元加运算符

一元加运算符 ( x) 是为以下类型的值定义的:

X

结果

解释

type number

type number

一元加

type duration

type duration

一元加

null

`空

对于其他值,"Expression.Error"会引发带有原因代码的错误。

一元加号运算符允许将 符号应用于数字、日期时间或空值。结果是相同的值。例如:

复制

代码语言:javascript复制
  - 1                 // -1 
    1                 // 1 
  #nan                // #nan 
  #duration(0,1,30,0) // #duration(0,1,30,0)

评估一元加运算符时,以下内容成立 x

  • x传播评估时引发的错误。
  • 如果评估结果x不是数字值,则会引发带有原因代码的错误"Expression.Error"

一元减运算符

一元减号运算符 ( -x) 是为以下类型的值定义的:

X

结果

解释

type number

type number

否定

type duration

type duration

否定

null

null

对于其他值,"Expression.Error"会引发带有原因代码的错误。

一元减号运算符用于更改数字或持续时间的符号。例如:

复制

代码语言:javascript复制
- (1   1)       // -2 
- - 1           // 1 
- - - 1         // -1 
- #nan          // #nan 
- #infinity     // -#infinity 
- #duration(1,0,0,0)  // #duration(-1,0,0,0) 
- #duration(0,1,30,0) // #duration(0,-1,-30,0)

评估一元减运算符时,以下内容成立-x

  • x传播评估时引发的错误。
  • 如果表达式是数字,则结果是表达式中x符号已更改的数字值。如果值为 NaN,则结果也是 NaN。

逻辑否定运算符

逻辑否定运算符 ( not) 是为以下类型的值定义的:

X

结果

解释

type logical

type logical

否定

null

null

此运算符计算not给定逻辑值的逻辑运算。例如:

复制

代码语言:javascript复制
not true             // false 
not false            // true 
not (true and true)  // false

在评估逻辑否定运算符时,以下内容成立not x

  • x传播评估时引发的错误。
  • 计算表达式 x 产生的值必须是逻辑值,否则"Expression.Error"必须引发带有原因代码的错误。如果值为true,则结果为false。如果操作数为false,则结果为true

结果是一个逻辑值。

类型运算符

运算符isas称为类型运算符。

类型兼容性运算符

类型兼容性运算符x is y 是为以下类型的值定义的:

X

结果

type any

可空原始类型

type logical

表达式x is y返回true如果的冲高类型x可兼容y,并返回false如果满足冲高类型x是不兼容的yy必须是可空原始类型

is-expression:       as-expression       is-expression is nullable-primitive-type nullable-primitive-type: nullableoptprimitive -type

is运算符支持的类型兼容性是通用类型兼容性的子集,并使用以下规则定义:

  • 如果x为 null 则它是兼容的,如果 y 是可空类型或 type any
  • 如果x为非空,则如果 的原始类型x与 相同,则它是兼容的y

评估表达式时,以下内容成立x is y

  • x传播评估表达式时引发的错误。

类型断言运算符

类型断言运算符x as y是为以下类型的值定义的:

X

结果

type any

可空原始类型

type any

表达x as y断言的值x是兼容y具体根据is操作者。如果不兼容,则会引发错误。y必须是nullable-primitive-type

as-expression:       等式表达式       as-expression as nullable-primitive-type

表达式x as y计算如下:

  • x is y执行类型兼容性检查,x如果该测试成功,则断言返回不变。
  • 如果兼容性检查失败,"Expression.Error"则会引发带有原因代码的错误。

例子:

复制

代码语言:javascript复制
1 as number               // 1 
"A" as number             // error 
null as nullable number   // null

评估表达式时,以下内容成立x as y

  • x传播评估表达式时引发的错误。

0 人点赞