定义不同的表达式类型

已完成

表达式是一个公式,用于指定如何生成所需值,然后求出值。 表达式使用项和运算符(可为一元或二元)。

如果使用一元运算符,运算符会影响紧随其后的项。 二元运算符会对运算符的任何一边都产生影响。

您可以使用以下运算符类型之一对运算符进行分类:

  • 一元

  • 字符串

  • 算术

  • 关系

  • 逻辑

一元运算符

一元运算符仅会影响紧随其后的项。 以下为一元运算符值:

  • +

  • -

  • NOT

使用减号 (-) 时,它会为减号后面的项创建一个负值。 因此,它仅会对跟在运算符后面的项产生影响。

var
    CustomerExists: Boolean;
    MyBoolean: Boolean;
begin
    CustomerExists := true;
    MyBoolean := NOT CustomerExists;
    // Will result in MyBoolean: false
end;

接下来的运算符都是二元运算符,此类运算符会对运算符任何一边的项都产生影响。

字符串运算符

唯一的字符串运算符是加号 (+),该运算符是二元运算符,因为它会对运算符任何一边的项都产生影响。 字符串运算符将两个字符串串联在一起。

在 AL 中使用字符串运算符的示例。

算术运算符

算术运算符用在数值表达式中。 数值表达式是产生数字值的公式。

您可以使用以下算术运算符:

  • 加 (+)

  • 减 (-)

  • 乘 (*)

  • 除 (/)

  • 整除 (DIV)

  • 取模 (MOD)

var
    MyExpression: Integer;
begin
    MyExpression:= 5 + 2 * 3;
    // Will result in MyExpression: 11
end;

根据您在算术运算符中使用的数据类型,您可以获得其他数据类型的结果。

17/8 = 2.125
17/9 = 1.88

除运算符(即除法)是您习惯使用的普通数学除法。 如果您将两个整数值相除,最终都会得到小数值。

整除 (DIV) 运算符会返回整数除法的整数商。 它是二元运算符,会生成整数值。 您可以通过删除结果的所有小数位数来计算整除的结果。

17 DIV 8 = 2   The decimal portion 125 is dropped
17 DIV 9 = 1   The decimal portion 88 is dropped

取模运算符 (MOD) 会求出一个数字除以另一个数字的余数。 在验证银行帐号等数字时,经常使用取模运算符。

5 MOD 2 = 1   5 = (2x2) + 1
17 MOD 9 = 8   17 = (9x1) + 8

如果比较此类运算符,则会出现以下结果:

5 / 2 = 2.5
5 DIV 2 = 2
5 MOD 2 = 1

运算符的应用顺序可能会对计算结果产生显著影响。

  • 最高级别:

    一元运算符

  • 第二个级别:

    * , / , DIV, MOD

  • 最低级别:

    + , - (二进制)

您可以使用子表达式 () 更改运算符优先级影响。 子表达式始终都会首先求值,您可以通过添加括号 () 来使用该表达式。

5 + 3 * 6 – 2 DIV -2 = ?

First Level:
5 + 3 * 6 – 2 DIV -2

Second Level:
5 + 3 * 6 – 2 DIV -2
= 5 + 18 – (-1)

Lowest Level:
+ and –
23 -(-1) = 24

关系表达式

您可以使用以下关系表达式:

  • =(等于)

  • <(小于)

  • >(大于)

  • <=(小于或等于)

  • >=(大于或等于)

  • <>(不等于)

  • IN(包括在集中)

关系运算符在所有运算符中具有最低优先级。 使用关系表达式,您可以按小于或大于、等于、小于或大于比较值。 您可以在下列情形中使用关系运算符:

  • 数字比较 - 数字比较的意思直观明了,就是对数字值进行比较。

  • 字符串比较 - 将字符串与 Unicode 日期进行比较,以确定哪个值在先。

  • 日期和时间比较 - 使用日历确定是哪个值在先。

  • 布尔比较 - false 值高于 true 值。

“设置包含”(使用 IN 运算符)是一个值列表,如下例所示:

[2,4,6,8,10]
[1..9,11..19]

IN 运算符会验证某个集中是否包含特定值。

5 IN [2,4,6,8,10] is FALSE
5 IN [1..9,11..19] is TRUE
5 IN [2,4..6,8,10] is TRUE
10 IN [1..9,11..19] is FALSE
'M' IN ['A'..'Z'] is TRUE

逻辑表达式

您可以使用以下逻辑表达式:

  • AND

  • OR

  • XOR

  • NOT

逻辑运算符也对 true 和 false 值进行求值(结果称为布尔值)。 逻辑运算符不比较常规值(如字符串、数字或日期),而是比较布尔值,关系运算符则根据值的差异比较相应值。

下例显示了不同逻辑运算符之间的比较。

显示了逻辑运算符之间的差异的表。

  • 使用 NOT 运算符,将对所有逻辑值求逆。 NOT True 的结果为 False,而 NOT False 的结果为 True。

  • 使用 OR 运算符,其中一个值必须为 True 结果才能为 True;否则,该值为 False。

  • 使用 AND 运算符,两个值都必须为 True 结果才能为 True;否则,值为 False。

  • 使用 XOR (Exclusive OR) 运算符,只能有一个值为 True 结果才能为 True;否则,该值为 False。

下例将所有运算符放在一起。

显示了运算符优先级影响的示例。

布尔表达式

在编程或使用应用程序语言时,您还将遇到布尔表达式。 布尔表达式是一种结果为布尔值的表达式,因此,您可以使用布尔变量或常量。 通常,关系表达式和逻辑表达式对布尔值进行求值。