Vala编程语言教程-运算符
运算符
=
赋值操作。左操作数必须为标识符,右操作数必须为适当的值或引用。
+, -, /, *, %
基础算术运算,作用于左右操作数。+
运算符也可用于字符串拼接。
+=, -=, /=, *=, %=
左右操作数间算术运算,左操作数必须为标识符,运算结果将赋值给该标识符。
++, --
自增与自减操作(隐式赋值)。仅需一个操作数,且必须为简单数据类型的标识符。值将被修改并重新赋值给该标识符。这些运算符可置于前缀或后缀位置:
- 前缀:语句的求值结果为运算后的新值
- 后缀:语句的求值结果为运算前的原始值
|, ^, &, ~, |=, &=, ^=
位运算:或、异或、与、非。第二组包含赋值操作,与算术版本类似。适用于所有简单值类型。(~
无对应的赋值运算符,因其为一元操作符,等效操作为 a = ~a
)。
<<, >>
位移操作:根据右操作数指定的位数,对左操作数进行左移或右移。
<<=, >>=
位移操作:根据右操作数指定的位数,对左操作数进行左移或右移。左操作数必须为标识符,运算结果将赋值给该标识符。
==
相等性测试。根据左右操作数是否相等返回布尔值:
- 值类型:值相等即为
true
- 引用类型:对象为同一实例时返回
true
- 例外:
string
类型按值进行相等性测试
<, >, >=, <=, !=
不等性测试。根据左右操作数是否满足描述的关系返回布尔值。适用于简单值数据类型及 string
类型。对于字符串,这些运算符按字典序比较。
!, &&, ||
逻辑运算:非、与、或。!
作用于单个布尔值,&&
和 ||
作用于两个布尔值。
? :
三元条件运算符。根据条件求值结果返回左或右子表达式的值:
条件 ? 真时值 : 假时值
??
空值合并运算符:a ?? b
等效于 a != null ? a : b
。例如为可能为 null
的引用提供默认值:
stdout.printf("Hello, %s!\n", name ?? "unknown person");
in
检查右操作数是否包含左操作数。适用于数组、字符串、集合或任何实现 contains()
方法的类型。对字符串执行子串搜索。
注:Vala 不支持运算符重载。部分运算符专用于 Lambda 声明等特定场景,将在相关上下文中说明。