控制结构
while (a > b) { a--; }
会重复递减a,每次迭代前检查a是否大于b。
do { a--; } while (a > b);
会重复递减a,每次迭代后检查a是否大于b。
for (int a = 0; a < 10; a++) { stdout.printf("%d\n", a); }
会先将a初始化为0,然后重复打印a直到a不小于10,每次迭代后递增a。
foreach (int a in int_array) { stdout.printf("%d\n", a); }
会逐个打印数组或其他可迭代集合中的整数。"可迭代"的含义将在后文说明。
上述四种循环均可通过break和continue关键字控制。break指令会立即终止循环,continue会直接跳转到迭代的测试部分。
if (a > 0) { stdout.printf("a大于0\n");
}else if (a < 0) { stdout.printf("a小于0\n");
}else {stdout.printf("a等于0\n");
}
根据条件执行特定代码块。第一个匹配的条件决定执行哪个代码块,如果a大于0则不会测试是否小于0。允许使用任意数量的else if块,以及零个或一个else块。
switch (a) {case 1:stdout.printf("一\n");break;case 2:case 3:stdout.printf("二或三\n");break;default:stdout.printf("未知\n");break;
}
switch语句根据传入的值精确执行零个或一个代码段。在Vala中case之间不会穿透(空case除外)。为确保这一点,每个非空case必须以break、return或throw语句结尾。switch语句支持字符串类型。
给C程序员的提示:条件表达式必须始终返回布尔值。若需要检查变量是否为null或0,必须显式声明:if (object != null) { } 或 if (number != 0) { }。