流程控制Haxe篇

8 阅读4分钟

前言

在 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"有问题";


好了这就是你能用上的基本的逻辑了,你需要去理解他的用意,而不是每次看一次忘一次,那么下一篇,将会讲解类之间的关系及其他们的函数之间的关系