今天學(xué)習(xí)了Swift語(yǔ)言的最基本的知識(shí),以下是本人的一些認(rèn)識(shí)與小結(jié),希望能幫助更多人的區(qū)理解,如有不妥的地方望大家指出,以便及時(shí)更正。
基本運(yùn)算符
運(yùn)算符是一種特殊的符號(hào)或短語(yǔ),你可以用它來(lái)檢查,改變,或組合值。
運(yùn)算符都是一元,二元或者三元:
賦值運(yùn)算符
賦值運(yùn)算符 (a=b) 用 b 的值去初始化或更新a的值
let b =2 var a = 3 a= b //此時(shí)a的值等于b的值都是2
假如右邊賦值的數(shù)據(jù)為多個(gè)數(shù)據(jù)的元組,它的元素可以是一次性賦給的多個(gè)常量或變量
let (a, b) = (1, 2)// a等于1, b等于2
與C及Objective-C不同,Swift中賦值運(yùn)算符并不將自身作為一個(gè)值進(jìn)行返回。所以以下的代碼是不合法的:
if x = y {// 錯(cuò)誤, 因?yàn)閤 = y并不會(huì)返回一個(gè)值}
Swift支持所有數(shù)字類型的四個(gè)標(biāo)注運(yùn)算符:
例如:
1 + 2 // equals 35 - 3 // equals 22 * 3 // equals 610.0 / 2.5 // equals 4.0
不同于C和Objective-C,默認(rèn)情況下Swift的算術(shù)運(yùn)算符不允許值溢出。加法運(yùn)算符對(duì)字符串連接也一樣適用,例如:
"hello, " + "world" // equals "hello, world"
兩個(gè)字符,或者一個(gè)字符一個(gè)字符串,能組合成一個(gè)新的字符串:
let dog: Character = "dog"let cow: Character = "cow"let dogCow = dog + cow// dogCow is equal to "dogcow"
取余運(yùn)算符
取余運(yùn)算符%是指在除數(shù)除以被除數(shù)時(shí)余下的數(shù),如(3%2的余數(shù)就是1)
let a = 5let b = 3let c = a%b//這時(shí)c的值是2
同一個(gè)方法中如果a的值是-5那么取余運(yùn)算后c的值就是-2,如果b的值是-3則c的值會(huì)是2,也就是說(shuō)取余運(yùn)算的符號(hào)不受被除數(shù)b的影響,只受除數(shù)a的影響
浮點(diǎn)余數(shù)計(jì)算
不同于C與OC的是Swift的取余運(yùn)算同樣可以運(yùn)用于浮點(diǎn)數(shù):
let a = 8let b = 2.5let c = a%b//那么現(xiàn)在的c的值是0.5
自增自減運(yùn)算符
和C一樣Swift提供了自增(++),自減(--)兩個(gè)運(yùn)算符,其增減量為1,可以對(duì)任何的整點(diǎn)或浮點(diǎn)類型的變量使用。如
var a = 0++a //這時(shí)a的值是1--a //這時(shí)a的值是0
這里需要注意的是當(dāng)運(yùn)算需要返回值的時(shí)候,自增自減運(yùn)算符所放的位置的不同對(duì)運(yùn)算的結(jié)果也是不一樣的:
var a = 0let b = ++a //a和b的值都為1let c = a++ //這時(shí)a的值是2 c的值是1let d = --a //這時(shí)d的值是1 a的值也是1let e = a-- //這時(shí)e的值是1 a的值是0
復(fù)合賦值操作符
Swift提供了和C語(yǔ)言一樣的復(fù)合復(fù)制操作符,就是說(shuō)把賦值和另外一種運(yùn)算符結(jié)合起來(lái)。如(+=),(-=):
var a = 1a += 2 //這時(shí)a的值為3 a -= 3 //這時(shí)a的值為0
加法賦值操作符的原型是 a = a + 2,之所以寫成(+=)是因?yàn)檫@樣寫能夠有效地把加法和賦值組合到一個(gè)運(yùn)算,同時(shí)執(zhí)行這兩個(gè)任務(wù)。
需要注意的是:復(fù)合復(fù)制操作符不返回值。例如這樣寫就是不對(duì)的 let a = +=1。
比較運(yùn)算符
Swift支持所有C的比較運(yùn)算符。
let a = 5let b = 6let c = 5a>b //返回false c<b //返回truea>=c //返回true a<=c //返回truea == c //返回truea != b //返回true
這種比較運(yùn)算符通常都用在條件語(yǔ)句中,比如if語(yǔ)句
let a = "chk"if a == "chk"{ PRintln("hello, chk") } else{ println("not chk") }//輸出的結(jié)果是 hello, chk
關(guān)于if語(yǔ)句我們以后再詳細(xì)研究
范圍運(yùn)算符
Swift提供了兩種形式的范圍運(yùn)算符
1、封閉范圍運(yùn)算符
封閉范圍運(yùn)算符(a...b)定義了一個(gè)范圍,從a到b,并包括了a和b的值。一般用于for -in 循環(huán)語(yǔ)句中
for i in 0...5{ println("第 /(i) 次")}//第 0 次//第 1 次//第 2 次//第 3 次//第 4 次
關(guān)于for -in語(yǔ)句我們以后再深入研究?! ?/span>
2、半封閉的區(qū)域運(yùn)算符
半封閉的區(qū)域運(yùn)算符(a..b)定義了從a到b的范圍,但不包括b。它被認(rèn)為是半封閉的,因?yàn)樗谝粋€(gè)值,而不包含最終值。
半封閉的范圍使用明確,當(dāng)你使用從零開(kāi)始的列表,如數(shù)組,它是有用的數(shù)到(但不包括)列表的長(zhǎng)度:
let names = ["Anna", "Alex", "Brian", "Jack"]let count = names.countfor i in 0..count {println("Person /(i + 1) is called /(names[i])")}// Person 1 is called Anna// Person 2 is called Alex// Person 3 is called Brian// Person 4 is called Jack
請(qǐng)注意,該數(shù)組包含四個(gè)項(xiàng)目,但0 . .數(shù)只數(shù)到3(數(shù)組中的最后一個(gè)項(xiàng)目的索引),因?yàn)樗且粋€(gè)半封閉的范圍。有關(guān)數(shù)組的信息,我們以后深入研究。
三元運(yùn)算符
Swift跟C語(yǔ)言一樣也支持三元運(yùn)算,三元運(yùn)算也屬于條運(yùn)算,主要形式是 a?b:c 其表達(dá)的意思是判斷a的值,若a的值返回true則表達(dá)式返回b的值,若a的值返回false則返回c的值。下面我們用代碼比較下三元運(yùn)算符的優(yōu)勢(shì):
let a = truelet b = a?2:3//這時(shí)b的值是2
上邊的表達(dá)式也可以這樣寫
let a = trueif a { reture 2}else{ reture 3}//結(jié)果是2
很明顯使用三元運(yùn)算符更簡(jiǎn)潔,更方便。不過(guò)需要注意的是為了保證代碼的可讀性,最好不要使用多個(gè)實(shí)例的三元條件運(yùn)算符組合成一個(gè)復(fù)合語(yǔ)句。
邏輯與運(yùn)算符
Swift支持這三個(gè)標(biāo)準(zhǔn)邏輯運(yùn)算符基于C語(yǔ)言,通常用在條件語(yǔ)句中:
邏輯非運(yùn)算符(!a)表達(dá)的意思為不是什么成立則返回true,不成立則返回false
let a = trueif !a { println("條件成立")}else{ println("條件不成立")}//輸出結(jié)果是 條件不成立//因?yàn)閍本身是正確地,而邏輯非運(yùn)算符說(shuō)a不是正確地,所以不成立返回false
邏輯與運(yùn)算符(A&&B)表達(dá)的意思為A,B兩個(gè)值都必須是true才返回true,否則A,B中有一個(gè)是false就返回false
let A = truelet B = falseif A && B { println("條件成立返回true")}else{ println("條件不成立返回false")}//輸出結(jié)果是 條件不成立返回false
邏輯或運(yùn)算符(A || B)表示A和B其中有一個(gè)是true則返回true,如果A,B都是false則結(jié)果返回false
let A = truelet B = falseif A || B { println("條件成立返回true")}else{ println("條件不成立返回false")}//打印結(jié)果是 條件成立返回true
在這里值得一提的是不管是邏輯與運(yùn)算符還是邏輯或運(yùn)算符都用到了短路條件判斷法,比如說(shuō)邏輯與運(yùn)算符(&&)必需是兩個(gè)值都為true時(shí)才成立,那么當(dāng)左邊的值是false的時(shí)候,條件不成立,就不需要再判斷運(yùn)算符右邊的值了。邏輯或運(yùn)算符(||)也是同樣的道理,邏輯或運(yùn)算符(||)是只要有一個(gè)值是true就成立,那么當(dāng)判斷左邊的值是true時(shí),則條件是成立的,就不用再判斷運(yùn)算符右邊的值了。
復(fù)合邏輯表達(dá)式
符合邏輯表達(dá)式是將多個(gè)邏輯運(yùn)算符復(fù)合后創(chuàng)建更長(zhǎng)的復(fù)合表達(dá)式:
let a = truelet b = falselet c = trueif !a || c && b { println("條件成立")}else { println("條件不成立")}//輸出結(jié)果是條件不成立
像這種復(fù)合邏輯表達(dá)式的判讀一般都是從左到右根據(jù)邏輯運(yùn)算符的優(yōu)先級(jí)依次進(jìn)行判斷,(!,&&,||)這三個(gè)運(yùn)算符的優(yōu)先級(jí)是一樣的,只需要牢記邏輯與運(yùn)算符(&&)兩者都必須是true才成立,邏輯或運(yùn)算符(||)兩者有一個(gè)是true則成立,如此即可正確解析整個(gè)復(fù)合表達(dá)式,一定要透過(guò)現(xiàn)象看本質(zhì)。
明確地括號(hào)
這個(gè)就比較好理解了,在復(fù)合邏輯表達(dá)式中我們可以添加()使邏輯意圖更加明確,比如在上段代碼中我們加入()
let a = truelet b = falselet c = trueif !a || ( c && b ) { println("條件成立")}else { println("條件不成立")}//輸出結(jié)果是條件不成立
在符合邏輯表達(dá)式中我們可以把幾個(gè)值放在一個(gè)單獨(dú)的邏輯運(yùn)算中去判斷出結(jié)果,然后根據(jù)()內(nèi)判斷的結(jié)果再與前面或后面的值進(jìn)行判斷,最后得出最終結(jié)果
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注