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à)去了。