跳转至

运算符

算术运算符

运算符 描述 示例 结果
+ 3 + 4 7
- 10 - 4 6
* 5 * 6 30
/ 10 / 3 3 (整数) / 3.333 (浮点)
% 取模 10 % 3 1

整数与浮点

// 整数运算(结果为 int)
let a = 10 / 3;       // 3
let b = 10 % 3;       // 1

// 浮点运算(结果为 float)
let c = 10.0 / 3.0;   // 3.3333...
let d = 10.0 % 3.0;   // 1.0

// 混合(结果为 float)
let e = 10 / 3.0;     // 3.3333...
let f = 5 + 2.5;      // 7.5

除零

let x = 10 / 0;       // Error: Division by zero
let y = 10.0 / 0.0;   // Error: Division by zero

比较运算符

运算符 描述 示例 结果
== 等于 3 == 3 true
!= 不等 3 != 4 true
< 小于 3 < 4 true
> 大于 3 > 4 false
<= 小于等于 3 <= 3 true
>= 大于等于 3 >= 4 false
let x = 5;
let y = 10;

println(x == y);   // false
println(x != y);   // true
println(x < y);    // true
println(x > y);    // false
println(x <= 5);   // true
println(x >= 6);   // false

跨类型比较

println(5 == 5.0);    // true (自动转换比较)
println(3 < 3.5);     // true
println(2.5 > 2);     // true

逻辑运算符

运算符 描述 示例 结果
&& 与(短路) true && false false
\|\| 或(短路) true \|\| false true
! !true false
let age = 20;
let has_id = true;

let can_drink = age >= 18 && has_id;    // true
let is_minor = age < 18;                 // false
let can_enter = can_drink || is_minor;   // true (短路)

短路求值

// && 第二个操作数仅在第一个为 true 时求值
let x = false && (1/0 == 0);   // false,不报错(短路)

// || 第二个操作数仅在第一个为 false 时求值
let y = true || (1/0 == 0);    // true,不报错(短路)

一元运算符

运算符 描述 示例 结果
- 负号 -5 -5
! 逻辑非 !true false
let x = 5;
let neg = -x;        // -5
let not_true = !true;  // false

赋值

= 赋值。let 声明新变量,普通 = 重新赋值已有变量:

let x = 10;     // 声明
x = 20;          // 重新赋值
println(x);      // 20

v0.1 限制

v0.1 暂不支持复合赋值运算符 += / -= / *= / /=。请用 x = x + 1 形式。

let count = 0;
count = count + 1;   // 等价于 count += 1
count = count * 2;   // 等价于 count *= 2

运算符优先级

从高到低:

优先级 运算符 说明
1 () [] 括号、索引
2 - ! (一元) 负号、逻辑非
3 * / % 乘除模
4 + - 加减
5 < > <= >= 比较
6 == != 相等
7 && 逻辑与
8 \|\| 逻辑或

括号改变优先级

let a = 2 + 3 * 4;        // 14 (先乘后加)
let b = (2 + 3) * 4;      // 20 (括号优先)
let c = 10 - 2 - 3;       // 5 (左结合)
let d = !true || false;   // false (先 ! 后 ||)
let e = !(true || false); // false (括号优先)

真值判断

以下值在布尔上下文中为"假",其他为"真":

真值
false
none
"" (空字符串)
[] (空列表)
0 / 0.0 真(注意:数字零不为假)
其他
if "" { println("不会执行"); }
if [] { println("不会执行"); }
if none { println("不会执行"); }
if 0 { println("会执行"); }      // 数字零为真
if "hello" { println("会执行"); }

下一步