一、變量常量Variable,Constant
字符串+字符不能直接使用加號,需要使用append
String.append(Character)?
二、字符串String
三、字符Character
四、數組和字典
類型化的集合
數組中如果出現不同類型的內容,則是OC中的數組,不是swift的數組。
1.給數組規定類型 ?
var names: String ( ) = [ "aa","dd","ff" ]
var arr: [Int] = [2,3]
var arr:Array<Int> = [2,3]
var arr = [Int]( )
2.增加數組
var shoppingList = [“松花蛋”,”豆漿"]
shoppingList.append( “啤酒")
shoppingList += [“枸杞”,”香油”,”五香粉"]
3.修改數組中的某個內容
shoppingList[0] = "6顆松花蛋"
4.批量修改數組中連續的內容
shoppingList[3...5] = ["?毛?豆", "?黃?瓜"]
5.增加字典的內容
var numberOfLegs = ["螞蟻": 6, "?小蛇": 0, "?小狗": 4]
numberOfLegs["蜘蛛"] = 273
6.查詢字典中的一個可能值
使用option可能值這個方法
7.給字典規定類型
var numberOfLegs: Dictionary<String, Int> = ["螞蟻": 6, "?小蛇": 0, "?小狗": 4]
var numberOfLegs: [String: Int]= ["螞蟻": 6, "?小蛇": 0, "?小狗": 4]
五、if語句
六、Switch語句
1.注意事項:
無需寫break語句
但是必須寫default語句(必須全面覆蓋,Switch must be exhaustive)
2.常用的使用場景:
switch sender {
? ? ? ? case button:
? ? ? ? ? ? ? ? ? println("有人點了按鈕")?
? ? ? ? ?case usernameTextField:
? ? ? ? ? ? ? ? ? ?println("有人點了用戶名輸入框")
? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? println("有?點到了其它東西")
}
3.可以用逗號分割所有的可能性,無需給每一個可能性寫一個case
switch legCount {
? ? ? ?case 0:
? ? ? ? ? ? ? ?println("蹭蹭蹭")
? ? ? ?case 1, 3, 5, 7, 9, 11, 13:
? ? ? ? ? ? ? ? println("顛顛顛?兒")
? ? ? ?default:
? ? ? ? ? ? ? ? ?println("?走?走?走")
}
4.區間匹配
switch legCount {
? ? ? ? case 0:
? ? ? ? ? ? ? ?println("蹭蹭蹭")
? ? ? ? case 1...8 :
? ? ? ? ? ? ? ? println("顛顛顛?兒")
? ? ? ? default:
? ? ? ? ? ? ? ? println("?走?走?走")
}
七、函數/方法Function
可以帶參數,可以帶多個參數。
參數可以帶默認值。
可以帶返回值。 ->
可以帶多個返回值。(,)小括號,逗號分割多個返回值。
八、元組Tuples
合并在一起的數據結果
元組支持整體加可能
注意:(Int?, Int?) 和 (Int, Int)?的不同
1)(Int?, Int?) 元組肯定有值。元組里的第一個元素有值,第二個元素沒有值;第一個沒有值,第二個有值;第一個有值,第二個也有值;第一個沒有值,第二個也沒有值。
2)(Int, Int)?這個元組可能有值,這個元組也可能沒有值。但是如果這個元組有值,那么元組里的兩個元素是一定有值的。
九、閉包 Closure
無參數無返回值
閉包可作為參數
依附式閉包
十、類 Class
1.屬性 properties
2.方法 methods
3.初始化 initializers
1. 屬性 properties
(1)可以繼承某個類,也可以不繼承。
(2)儲值屬性
(3)算值屬性
當前屬性的值,可以由其他的值算出來。
get {?
}
set {
}
newValue變量訪問新值
(4)自動內存空間分配 Automatic Memory Allocation
(5)初始化
初始化沒有返回值
init ( ) {
? ? ? ?super.init ( )
}
(6)屬性覆蓋
(7)方法覆蓋
(8)屬性觀察
willSet {
// 在這里可以通過 newValue 變量訪問新值
}
didSet {
// 在這里可以通過 oldValue 變量訪問舊值
}
2. 方法 Methods
3.初始化
十一、結構體 Struct
1.
struct 名字 {
}
2.
結構體內可以增加算值屬性,在結構體內部增加方法,對現有數值屬性進行屬性觀察
3.
結構體和類的區別:
1)結構體不可以繼承;類可以繼承。
2)結構體是值傳遞;類是引用值傳遞。
4.
mutating 試圖修改結構體內部的元素值
十二、枚舉 Enumerations
1.
enum 名字:類型 {
}
2. toRaw( ) 獲取枚舉內部的行值
3.行值:可以是Int整型類型,也可以是String字符串類型
4.關聯值
5.初始化方法
6.算值屬性
十三、擴展 Extensions
1.
extension 名字 {
}
十四、一個非泛型化的棧結構的結構體
A Non-Generic Stack Structure