Swift學(xué)習(xí)日記--初識(shí)基本語(yǔ)法

Swift語(yǔ)言出來(lái)也有一段時(shí)間了,一直沒(méi)有時(shí)間去研究它,因?yàn)楣镜捻?xiàng)目用的基本還是objec-c,個(gè)人認(rèn)為swift語(yǔ)言在這兩年肯定會(huì)用的比OC多,所以趁這個(gè)假期好好研究下它。


一、首先通過(guò)一行代碼對(duì)Swift一個(gè)初步的認(rèn)識(shí)

println ("hel lo, w orld ")?

如果你寫(xiě)過(guò)C或者Objective-C代碼,那你應(yīng)該很熟悉這種形式——在Swift中,這行代

碼就是一個(gè)完整的程序。你不需要為了輸入輸出或者字符串處理導(dǎo)入一個(gè)單獨(dú)的庫(kù)。全局作

用域中的代碼會(huì)被自動(dòng)當(dāng)做程序的入口點(diǎn),所以你也不需要main函數(shù)。你同樣不需要在每

個(gè)語(yǔ)句結(jié)尾寫(xiě)上分號(hào)。

注意:為了獲得最好的體驗(yàn),在Xcode當(dāng)中使用代碼預(yù)覽功能。代碼預(yù)覽功能可以讓

你編輯代碼并實(shí)時(shí)看到運(yùn)行結(jié)果。

使用方法如下:

一、常量和變量的定義

1.1、使用let來(lái)聲明常量,使用var來(lái)聲明變量。一個(gè)常量的值在編譯時(shí)并不需要獲取,但是你

只能為它賦值一次。也就是說(shuō)你可以用常量來(lái)表示這樣一個(gè)值:你只需要決定一次,但是需

要使用很多次

例如:

let myName = "zhangsan"

var changedNum = 43

changedNum? = 54

1.2、常量或者變量的類(lèi)型必須和你賦給它們的值一樣。然而,聲明時(shí)類(lèi)型是可選的,聲明的同時(shí)賦值的話(huà),編譯器會(huì)自動(dòng)推斷類(lèi)型。如果初始值沒(méi)有??供足夠的信息(或者沒(méi)有初始值),那你需要在變量后面聲明類(lèi)型,用冒號(hào)分割。

例如:let score:Double = 70

1.3、值永遠(yuǎn)不會(huì)被隱式轉(zhuǎn)換為其他類(lèi)型。如果你需要把一個(gè)值轉(zhuǎn)換成其他類(lèi)型,請(qǐng)顯式轉(zhuǎn)換。

例如:

let firstName = "lisi"

let age = 87

let descirption = firstName + String(age)

有一種更簡(jiǎn)單的把值轉(zhuǎn)換成字符串的方法:把值寫(xiě)到括號(hào)中,并且在括號(hào)之前寫(xiě)一個(gè)反斜杠。

例如:

let another? = "lisi age is \(age)"

二、字典和數(shù)組

使用方括號(hào)[]來(lái)創(chuàng)建數(shù)組和字典,并使用下標(biāo)或者鍵(key)來(lái)訪(fǎng)問(wèn)元素。

2.1、數(shù)組的創(chuàng)建

例如:var names = ["zhangsan","lisi","wangwu","shabi"]

創(chuàng)建一個(gè)空數(shù)組的方式:

var emptyArray = [String]()

2.2、字典的創(chuàng)建

var dictionary = ["name":"shabi","age":"23"]

dictionary["age"]

注意:前面的時(shí)key值,后面的是Value值

空字典的創(chuàng)建

let emptyDictionary = Dictionary<String,Float>()

三、控制流

使用if和switch來(lái)進(jìn)行條件操作,使用for-in、for、while和do-while來(lái)進(jìn)行循環(huán)。包裹條

件和循環(huán)變量括號(hào)可以省略,但是語(yǔ)句體的大括號(hào)是必須的。

例如:

let? teseData = [23,45,65,76,43]

var max = 0

for data in teseData {

if data>max {

max = data

}

}

max

上面代碼的意思是遍歷這個(gè)數(shù)組并找出其中最大的數(shù),在if語(yǔ)句中,條件必須是一個(gè)布爾表達(dá)式——像if data { ... }這樣的代碼是錯(cuò)誤的。

3.1、你可以一起使用if和let來(lái)處理值缺失的情況。有些變量的值是可選的。一個(gè)可選的值可能是一個(gè)具體的值或者是nil,表示值缺失。在類(lèi)型后面加一個(gè)問(wèn)號(hào)來(lái)標(biāo)記這個(gè)變量的值是可選的。

例如:

var optionalString:String? = "test"

if let test = optionalString {

println("我ture")

}

else {

println("我不跑")

}

如果變量的可選值是nil,條件會(huì)判斷為false,大括號(hào)中的代碼會(huì)被跳過(guò)。如果不是nil,會(huì)

將值賦給let后面的常量,這樣代碼塊中就可以使用這個(gè)值了。

3.2、switch支持任意類(lèi)型的數(shù)據(jù)以及各種比較操作——不僅僅是整數(shù)以及測(cè)試相等

let myMoon = "我的心情還是不錯(cuò)的哦"

switch myMoon {

case "娘娘腔在陪她玩":

let result = "畢竟娘娘腔,根本不是我對(duì)手,注定孤獨(dú)一生"

case "小氣鬼在陪他玩":

let result = "畢竟小氣鬼,飯都不請(qǐng)吃,注定孤獨(dú)一生"

case "說(shuō)好的四點(diǎn)鐘滾蛋呢":

let result = "說(shuō)話(huà)不算數(shù),注定孤獨(dú)一生"

case "我的心情還是不錯(cuò)的哦":

let result = "哈哈,等你回來(lái)一起愉快的滾床單,嘎嘎嘎。。。"

default:

let result = "我們一起愉快的玩耍"

}

很明顯上面的結(jié)果大家都知道,不好意思我是一個(gè)純潔的程序員。

3.2、如何用for in來(lái)遍歷字典,需要兩個(gè)變量來(lái)表示每個(gè)鍵值對(duì)。

let testDic = ["key1":[34,34,34,23,342,43],"key2":[23,33,321,31,434],"key3":[4545,54,454,54,5,6]]

var maxS = 0

for (kind,Arr) in testDic {

for num in Arr {

if num>maxS {

maxS = num

}

}

}

maxS

結(jié)尾

感覺(jué)Swift語(yǔ)言寫(xiě)起來(lái)要簡(jiǎn)潔很多,不需要寫(xiě)分號(hào),有些小括號(hào)也可以省略,這也只是我對(duì)這個(gè)語(yǔ)言的一些初步見(jiàn)解,如有錯(cuò)誤,望指正!下午就寫(xiě)到這里吧,程序員的女神跟別人看電影還沒(méi)回來(lái),內(nèi)心焦躁學(xué)不進(jìn)去了,打電話(huà)去了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容