? 學(xué)習(xí)一門新的語言,首先應(yīng)該從該門語言的基礎(chǔ)語法入手,掌握基本語法的使用規(guī)則,先保證能寫簡(jiǎn)單的邏輯,能閱讀簡(jiǎn)單的代碼。之后,通過完成幾個(gè)簡(jiǎn)單的需求,實(shí)際寫代碼感受并強(qiáng)化一下相關(guān)語法。并且,在具體寫代碼的過程中強(qiáng)化語法的一些細(xì)節(jié)以及相關(guān)的原理性的知識(shí)。本系列文章會(huì)盡量避免事無巨細(xì)的介紹各種語法或知識(shí),而是以讓大家更快地上手Swift為目標(biāo)。至于其中用的比較少的細(xì)節(jié),會(huì)放在最后介紹或者不介紹。我相信如果對(duì)Swift整體有了認(rèn)識(shí),具體的用的比較少的細(xì)節(jié),等真用到了也能找到足夠多的相關(guān)資料。
? Swift是一門類型安全的語言。Swift幫助你明確代碼可以操作的類型。如果你的變量預(yù)期得到一個(gè)String,類型會(huì)安全地組織以免你不小心傳入Int。在開發(fā)過程中,這個(gè)限制能幫助你在開發(fā)過程中更早地發(fā)現(xiàn)并修復(fù)錯(cuò)誤。當(dāng)然,Swift的安全特性不止體現(xiàn)于此。
1、聲明常量和變量
? 常量顧名思義一旦設(shè)置好值便不能再被更改。變量可以在任何時(shí)候被設(shè)置為不同的值。
? 使用關(guān)鍵字let來聲明常量,使用關(guān)鍵字var來聲明變量。(ps:是不是看到了js或python的影子)
? ?let maxNumber = 10
??var currentNumber = 0
這段代碼讀作:聲明一個(gè)叫做maxNumber的常量,并賦值為10,聲明一個(gè)叫做currentNumber的變量,并設(shè)置初始值0。
ps: Swift 并不要求在每一句代碼結(jié)尾寫分號(hào)
2、類型標(biāo)注
? 你可以通過添加類型標(biāo)注為每個(gè)變量或常量標(biāo)明能夠儲(chǔ)存值的類型。添加類型標(biāo)注的方法是在變量或者常量的名字后加一個(gè)冒號(hào),再跟一個(gè)空格,最后加上要使用的類型的名稱。
? 例如:
? var welcomeMessage: String
? 聲明一個(gè)叫做welcomeMessage的變量,它的類型是String。
? var red, green, blue: Double
? 聲明red, green, blue三個(gè)變量,三個(gè)變量的類型均為Double。
? 常量或者變量必須擁有和你賦給它們的值相同的類型。不過,你并不需要總是顯示地寫出類型。在聲明一個(gè)常量或者變量的時(shí)候直接給它們賦值就可以讓編譯器推斷它們的類型。比如varmyVariable =42 編譯器就會(huì)推斷myVariable是一個(gè)整型,因?yàn)樗某跏贾凳且粋€(gè)整型。
3、輸出常量和變量
var welcomeMessage: String = "helloworld!"
print(welcomeMessage)
print("The current value ofwelcomeMessage is \(welcomeMessage)")
結(jié)果為:
hello world!
The current value of welcomeMessage ishello world!
Swift使用字符串插值的方式來把常量名或者變量名當(dāng)做占位符加入到更長(zhǎng)的字符串中,然后讓Swift用常量或變量的當(dāng)前值替換這些占位符。
let apples= 3
let appleSummary= "I
have \(apples)apples."
在聲明String變量時(shí)也可以采用同樣的方式
4、基本數(shù)據(jù)類型
? Swift為所有C和Objective-C的類型提供了自己的版本,包括整型值的Int,浮點(diǎn)數(shù)的Double和Float,布爾量值的Bool,字符串的String,數(shù)組Array,Set和字典Dictionary
?Swift版本的基本數(shù)據(jù)類型包括Int、UInt、Float、Double等
?let meaningOfLife = 42? 被推斷為Int
?let pi = 3.14159?? 被推斷為Double
5、String
var welcomeMessage: String = "hello world!"? //定義String
常用API
isEmpty????? 判斷String是否為空
count????? 返回String長(zhǎng)度
append????? 在String末尾添加字符
uppercased / lowercased????? 將String變?yōu)榇?小寫
hasPrefix /hasSuffix???? 是否有相應(yīng)的前/后綴
contains? 是否包含相應(yīng)的字符
OC中用 NSMutableString和NSString分別表示可變字符串和不可變字符串。Swift與此不同,在定義String時(shí),var代表可變,let代表不可變。(Array與Dictionary也是如此)
6、Array
? var shoppingList =["catfish","water","tulips","blue paint"]? //初始化Array
? shoppingList[1]= "bottleof water"? //修改Array中某一項(xiàng)的值
? var emptyArray =[String]()?? //初始化空Array
? letoddNumbers = [1, 3, 5, 7, 9, 11, 13, 15]? //An array of 'Int' elements
與OC不同,Array中的元素可以是基本數(shù)據(jù)類型(Dictionary也是如此)。
常用API
isEmpty????? 判斷數(shù)組是否為空
count????? 返回?cái)?shù)組長(zhǎng)度
first????? 返回首個(gè)元素(如果數(shù)組為空,返回nil)
last????? 返回最后一個(gè)元素(如果數(shù)組為空,返回nil)
append????? 在數(shù)組末尾添加一個(gè)元素
insert????? 在固定下標(biāo)位置插入某一元素
remove????? 移除某一元素
7、Dictionary
var occupations= [
????"Malcolm":"Captain",
????"Kaylee":"Mechanic",
]? // 初始化字典
occupations["Jayne"]= "PublicRelations"? // 修改字典中某項(xiàng)值
let emptyDictionary= [String:Float]()? // 初始化空字典
常用API
isEmpty????? 判斷字典是否為空
count????? 返回字典長(zhǎng)度
keys????? 返回字典所有的key
values????? 返回字典所有的value