Swift中比較獨(dú)特的基本運(yùn)算符
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評(píng)論(0)
一。 需注意的基礎(chǔ)運(yùn)算符
1. 賦值運(yùn)算符(=)
在Objective-C,C等一些語言中允許你在表達(dá)式中使用=號(hào), 如下所示。 testNumber = 20會(huì)返回一個(gè)bool類型的值YES。 testNumber = 20在表達(dá)式中是永真的。所以下方的代碼會(huì)打印Log中的內(nèi)容。
NSInteger testNumber = 10;
if((testNumber = 20)) {
NSLog(@“testNumber = %ld”, testNumber);
}
在Swift中是不允許這樣做的,從這一點(diǎn)也能看出Swift語言的安全性。如果你在Swift寫了上面的代碼,就會(huì)報(bào)出下面的錯(cuò)誤。IDE就會(huì)提示你,問你是不是應(yīng)該使用==預(yù)算符。
2.類型安全性,不允許隱式類型轉(zhuǎn)換
這一點(diǎn)也是Swift語言的一個(gè)優(yōu)勢(shì),在Swift語言中是不允許你使用隱式類型轉(zhuǎn)換的。即便是Double類型和Float類型進(jìn)行隱式類型轉(zhuǎn)換也是不可以的。而在Objective-C中是可以進(jìn)行隱式類型轉(zhuǎn)換的??聪路綄?shí)例:
在Objective-C中你可以這樣做, 下方代碼是可以編譯通過的。兩種類型(Float32, Float64)不同的數(shù)據(jù)進(jìn)行相加,然后再把結(jié)果隱式轉(zhuǎn)換成另一種類型(NSInteger)。
Float32 floatNumber1 = 10.0f;
Float64 floatNumber2 = 20.0f;
NSInteger result = floatNumber1 + floatNumber2;
上面的代碼在Swift中如下,IDE會(huì)報(bào)一個(gè)錯(cuò)誤,如下所示。錯(cuò)誤的大致意思就是你不能把Float32類型的數(shù)據(jù)與Float64類型的數(shù)據(jù)進(jìn)行相加。其本質(zhì)原因是在Swift語言中是不允許你進(jìn)行隱式類型
在Swift中對(duì)上述代碼進(jìn)行類型顯示轉(zhuǎn)換,編譯就會(huì)通過。在Playground中就會(huì)顯示相應(yīng)的結(jié)果值。
3.取模運(yùn)算(%)的特殊性
還是以O(shè)bjective-C做類比,在Objective-C中取模運(yùn)算(%)只支持整型,如果在取模運(yùn)算中你使用了浮點(diǎn)類型,那么就會(huì)報(bào)出如下錯(cuò)誤。大概意思就是取模運(yùn)算不支持浮點(diǎn)類型,請(qǐng)轉(zhuǎn)換成NSInteger類型。
而Swift中的取模運(yùn)算就支持浮點(diǎn)類型,上面的語句在Swift中就不會(huì)報(bào)錯(cuò),下方是上述事例在Playground中的結(jié)果值:
4. nil聚合(合并,連接)運(yùn)算符(??)
該運(yùn)算符可謂是Swift中添加的新特性,??運(yùn)算符在Objective-C中是沒有的。但是??不是Swift的原創(chuàng),在C#中也是有??運(yùn)算符的,而且用法和Swift中??用法類似。都是用來處理nil值的運(yùn)算符,通過一個(gè)實(shí)例來進(jìn)行介紹,一目了然。
在實(shí)例中我們先定義一個(gè)可選類型的字符串變量developLanguage,來記錄開發(fā)語言, 再定義一個(gè)選擇開發(fā)語言的字符串變量selectLanguage。如果developLanguage的值為nil的話,默認(rèn)選擇的語言是“Swift”。 如果developLanguage的值不為nil, 就強(qiáng)制打開可選類型的值,把該值賦值給字符串變量selectLanguage。具體代碼如下所示:
接下來就是預(yù)算符??出廠的時(shí)候了,一個(gè)??的功能就是上面代碼中if -- else的功能。也就是說上面的if -- else 語句可以使用下方的??運(yùn)算符來代替。下面要注意一點(diǎn)的是在??運(yùn)算符中使用可選類型變量時(shí)沒有使用!強(qiáng)制打開可選類型的值, 因?yàn)樵???運(yùn)算符中能確保使用的可選類型變量中有值,如果沒有值就不打開使用,所以就可以把!省略掉。
5.比較運(yùn)算符支持字符串
在Objective-C中你可以使用比較運(yùn)算符來比較運(yùn)算符,這樣做編譯器是不會(huì)報(bào)錯(cuò)的,但是你不會(huì)得到你想要的結(jié)果。如果你直接用比較運(yùn)算符來比較字符串的話實(shí)質(zhì)上是比較的字符串的內(nèi)存地址,請(qǐng)看下方Objective-C的代碼。有下方的輸出結(jié)果不難看出比較的是字符串的內(nèi)存地址。
在Swift中你可以使用比較運(yùn)算符來比較字符串,如下所示:
6.區(qū)間運(yùn)算符
區(qū)間運(yùn)算符可以表示兩個(gè)值之間的范圍。。。. 是閉區(qū)間運(yùn)算符,比如a.。.b表示a到b這個(gè)區(qū)間并且包括a和b的值。 。。《是半開區(qū)間, 比如a.。
下方代碼使用的是閉區(qū)間運(yùn)算符1.。.10, 會(huì)循環(huán)10次
如果改成半開區(qū)間,那么就是循環(huán)9次
?
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%
下載地址
Swift中比較獨(dú)特的基本運(yùn)算符下載
相關(guān)電子資料下載
- 拿下國(guó)家級(jí)信創(chuàng)認(rèn)證!中科馭數(shù)KPU SWIFT-2200N成為國(guó)內(nèi)首款滿足金融業(yè)嚴(yán)苛要求的 163
- 中科馭數(shù)基于DPU的思威SWIFT系列智能網(wǎng)卡與統(tǒng)信軟件產(chǎn)品完成適配 176
- 如何使用Swift提高代碼質(zhì)量 126
- 積木易搭Magic Swift Plus為雕刻工藝品精雕復(fù)刻提供三維數(shù)字化解決方案 274
- 詞法分析-Antlr-1 235
- Kotlin 1.8.0發(fā)布,改進(jìn)性能和Swift的互操作性 1044
- Swift 2023:強(qiáng)調(diào)并發(fā)、泛型和C++互操作性,開發(fā)Swift解析器 300
- 彩色套件創(chuàng)建全彩3D模型MagicSwiftPlus僅千元級(jí) 432
- Swift的使用體驗(yàn)與生態(tài)發(fā)展之路 981
- 如何加速apply函數(shù)600倍的技巧 627