条件运算会分成三个部分,在我目前学到的Swift语言中,我认为有三种条件运算必须要整合成一个单元来复习:
简言上述三种条件运算的逻辑:
if…else比较属於是直线式逻辑,一个东西进来之後,一直经过层层过滤,最後才认为它被归属为哪个条件之下的产物。
guard…else 则如其名,像个守卫,如果你符合它守护的原则,那麽你所提的条件就会被它接纳,否,则被踢除,端看else後的条件是什麽,产出产物。
Switch case有趣些,它比较像是平行所有的条件,然後你符合Switch语法里的哪一个case,就走那向case给出的条件过滤,然後产出那个条件下的产物。
最常见的就是if...else的运算,或者也可以直白的以中文来说,就是:「如果...就...」
if…else语法应该是最基础的条件运算语法了,几乎每个程序语言都有,我之前写过的Python也有这种运算的语法,只不过如果要详细一点说,Swift的if条件运算语法有三个小分类:
if A{
return B
}
如果A条件成立,就执行B
if A{
//implement B
}else{
//implement C
}
如果A条件成立,就执行B,若否,就执行C
这种运算的想法跟guard…else很像,只要条件一没有成立,就是走向另一个结果。
if A1{
//implement B
}else if A2{
//implement C
}else if A#{
//implement D
}
这种逻辑则偏向多条件式的运算,且通常具有顺序性,假若条件A1失败,那就走向条件A2,依此类推,符合其条件的就执行其中的内容。
不过由於它是层层的过滤条件,因此在速度上会比Switch case慢些。
条件运算这件事情,除了基本型的if…else,还有一种,叫做guard…else,诚如上一篇简短的描述:
guard…else 如其名,像个守卫,如果你符合它守护的原则,那麽你所提的条件就会被它接纳,否,则被踢除,端看else後的条件是什麽,产出产物。
guard的逻辑是某条件为真,不然就是某条件为假,产出两种结果。
if…else则是可以包含多重条件的前提,然後进行筛选,和guard比较的话,会有一种感觉是:guard比较单纯,就是符合条件或不符合条件两者。
总之,guard在操作上有点像个守卫,你是好人,就让你进来,你是坏人,就掰掰。
func passwordCheck(code:String){
guard code == "password" else{
print("shit,not right,Bro!")
return
}
print("Ok,got you now")
}
let rightcode = "password"
passwordCheck(code:rightcode)
所以,要记得一件事情,guard...else有一个特点是:会先描述条件不符合後执行的内容,然後在执行完後,若符合条件才会执行符合条件的内容。
或者回到刚刚的说法:守卫总是会记得谁看起来像是坏人,谁是坏人就让坏人不能进来,好人则可以进来。
使用guard…else的优势
这里我想套用之前在网路上看到彼得潘对guard…else的描述:
可读性佳
不用浪费时间读取不需要的程序码
大概在这里可以重新描述他在第一点里提到的:if…else通常会把所有条件论述一遍,最後才产出结果,而guard…else只有执行一回合的程序语言,如果执行如果为否,则立马产出结果。
而可读性这件事情,大抵可以说大家都知道guard是只要了解一个条件,就会产出两个结果,且一翻两瞪眼的逻辑,所以不用if…else这要查看很多逻辑条件啊!
如果你对上一篇的if…else算是熟悉,你可以大概的知道if…else的程序逻辑是一个区块又一个区块的,而在这里,三元运算子提供了一个更简便的写法:
原先的if…else大概会让程序语言的呈现变成下面这样:
let isTainan = true
if isTainan{
print("food alway sweet")
}else{
print("not really add suger in food")
}
但这种情况由於逻辑简单,所以可以以三元运算子的方式下去处理,公式大概如下:
「条件」?「符合条件的结果」:「不符合条件的结果」
或者套用Syashin Chen的说法更为简单:
公式: a ? b : c,条件 a 为 True ,回传 b。条件 a 为 false ,回传 c。
let isTainan = true
print(isTainan ? "food alway sweet":"not really add suger in food")
Switch case到底在干什麽呢?要我形容,它就是一个多条件同时判断的判断式,网路上有相关评测大概是有提到if…else跟Switch case到底哪个比较耗时,结论是if…else比较耗时。(前提是跑类似内容的东西,我不知道我这样讲好不好)
1.Switch Case
如下面所说的,Switch case一次就会描述所有的条件,然後,还会追加一个条件叫做默认条件(default),基本上Switch case在运作的时候,只要匹配到第一个符合条件的项目,就会结束整个程序,这也就是它跟if…else相比快的地方。
Switch case在写的时候,必须注意几件事情:
铁人赛
>>: [NestJS 带你飞!] DAY03 - Controller (上)
今天要来换个redis写法, 看看能不能缩短执行时间。 首先我会用git worktree再开一个专...
相信经过这29天的文章,大家已经了解颜色app的制作过程以及各功能该如何撰写与应用。既然功能都完成...
前言 我觉得要讲理论还是解释$_POST & $_GET是什麽的,我可能也讲不出个所以然,也...
今天我们来谈一下使用Parrot Security的Recon-ng进行足迹和侦察 登入Parrot...
资料处理是JavaScript非常重要的一环,如果观念不正确,常常会卡在那边,就算可以运行了,也不知...