前言
在 Hello Haxe篇 中我们已经把类型简单讲解了一下,那么在这篇,我们主要讲解逻辑有关的,好吧我想不到前言里面还能写啥了QwQ,直接开始吧。
基础运算符
我先把之后会出现的符号告诉你什么意思方便后续的理解
比较运算符
- == :是否等于
- != :是否不等于
- > :是否大于
- <:是否小于
- >=:是否大于或等于
- <=:是否小于或等于
逻辑运输符
- &&:并且
- ||:或者
- !:取反
计算运算符
- +:加
- -:减
*:乘- /:除
- %:取余数
- +=:将变量以当前值为基础加上
- -=:将变量以当前值为基础减去
- *=:将变量以当前值为基础乘以
- /=:将变量以当前值为基础除以
- %=:将变量以当前值为基础除以某值取余数
- ++:将整数变量以当前值+1
- --:将整数变量以当前值-1
流程控制逻辑
条件判断
提示:凡是用括号括起来的运算条件返回来的为true或false
var num:Int = 1145;
var hello:Bool = (num == 1145); //num == 1145等同于true
var sorry:Bool = (num > 1); //num大于1所以等同于true
var huh:Bool = (num >= 100 && num <= 200); //这里的意思是:num是否大于等于100并且小于等于200,在这里1145不在这个范围内所以为false
var bruh:Bool = (num > 2000 || num < 1500); //这里的意思是:num是否大于2000或者num是否小于1500,其中num为1145满足num小于1500所以为true
//同时根据这个特性我们还能写复杂的逻辑判断
var test:Bool = ((num == 1145 || num > 2000) && (num < 2500 && num > 0));
/*这里我们需要从内开始推断
(num == 1145 || num > 2000) :这两个条件其中num == 1145满足,并且它使用 '或' 逻辑符连接所以为true
那么整体就变成(true && (num < 2500 && num > 0));
(num < 2500 && num > 0):这两个条件num = 1145都满足,所以为true
那么整体就变成(true && true);
这很明显了他最终是ture
true && true:为真
true || true:为真
true && false 为假
true || false:为真
false && false:为假
false || false:为假
*/
总而言之&&必须是左右两边都为true才会返回真,||只需要有一边满足ture就会返回真。
false = !true
true = !false
这个逻辑不必多讲,就是把真变假,把假变真。
if判断
if(num == 1145) {
trace("你过关!"); //如果num等于1145就执行
} else if(num == 1919) {
trace("你过关?"); //如果num不满足上面那个等于1145但是等于1919就执行
} else if(num == 1234){
trace("我不知道"); //如果num不满足以上逻辑但是等于1234就执行
} else {
trace("该罚!"); //如果num不满足以上任何一个逻辑就执行
}
switch判断
switch你可以理解为更高级的if
case就是分支,后面跟的就是需要满足的值,可以理解为else if
default你可以理解为else
switch (level) {
case 1: { //如果level为1就执行
trace(1234);
trace("第一关");
};
case 2: trace("第二关"); //如果level为2就执行
case "getOut": trace("get out"); //如果level为"getOut"就执行
default: trace("未知关卡"); //如果level不满足以上所有条件就执行就执行,也就是默认
}
循环
for循环
for循环中的i为变量名,这个变量随着for的进行而变化,0...5代表让i从0开始递进,递进到4(不包括5)
for(i in 0...5) {
trace(i); //控制台依次打印0 1 2 3 4
}
我们通常使用数组的长度:数组名.length作为递进
for(i in 0...数组名.length) {
trace(数组名[i]);
}
或者直接使用遍历数组的成员
for(i in 数组名) {
trace(i); //终端会依次打印组里面的所有成员
}
for里还有个关键字break:跳出循环
for (i in 0...10) {
if (i == 3) break;
trace(i); // 0 1 2
}
continue:跳过当前循环不执行后面的代码进行下一次循环
for (i in 0...5) {
if (i == 2) continue;
trace(i); // 0 1 3 4
}
while循环
如果条件为真就一直循环
var i = 0;
while (i < 5) { //循环直到i < 5为假
trace(i); //依次打印1 2 3 4
i++; //当前i + 1
}
当然也有先执行再做判断的
var i = 0;
do {
trace(i); //0 1 2 3 4
i++;
} while (i < 5);
返回与异常
return
从函数返回值,并结束当前函数,不执行之后的代码
function aandb(a:Int,b:Int):Int { //规定传入的参数必须是整数,并规定返回的值也是整数
return a + b;
}
trace(aandb(8,9)); //17
try-catch
捕获错误,不崩溃程序
try {
//可能会出问题的代码
} catch (error:Dynamic) {
trace("error:" + error);
}
throw
主动抛出错误
throw"有问题";
好了这就是你能用上的基本的逻辑了,你需要去理解他的用意,而不是每次看一次忘一次,那么下一篇,将会讲解类之间的关系及其他们的函数之间的关系