Swift小結(jié)

let/var

數(shù)組

//完整版
//let定義的數(shù)組,內(nèi)容不可變
let arr: Array<Int> = Array<Int>()
let arr = Array<Int>()
let arr = [Int]()
let arr = [1, 2, 3]
//根據(jù)位置進行操作,元素按順序排列
arr[1]

字典

let dict: Dictionary<String, Int> = Dictionary<String, Int>()
let dict = Dictionary<String, Int>()
let dict = [String:Int]()
let dict = ["key1":1, "key2":2]
//根據(jù)Key(鍵)操作,元素沒有順序
dict["key2"]

循環(huán)

//范圍
for i in 0...9 {
    
}

for i in 0..<10 {
    
}

let arr = [1, 2, 3]
for i in arr {
    
}

let dict = ["key1":1, "key2":2]
for pair in dict {
    print(pair.0, pair.1)
}

for (key, value) in dict {
    print(key, value)
}

var i = 10
while i < 10 {
    i += 1 //修改循環(huán)變量,使得循環(huán)能夠終止
}

i = 10
repeat {
    i += 1
} while i < 10

條件判斷

var i = 10
var j = 20
if i < j {
    
}
else if i < 10{
    
}
else {
    
}
//>, <, ==, !=, >=, <=
//&&(與), ||(或), !(非)

var a = false
var b = false

a && b: 只有當a和b都為真,表達式為真
a || b: 只有當a和b都為假,表達式為假
!a: 真變假,假變真

var i = 20
var j = 30

(i > 20) && (i < 10): 假
(i > 10) && (i < 20): 假
(i > 10) && (i < 30): 真
(i > 30) || (i < 30): 真

var b = false
!b

switch

var i = 1
switch i {
case 0..<10:
    print("xxx")
    fallthrough
case 1:
    print("yyy")
default:
    print("zzz")
}

enum

enum Weekday {
case Monday
case Thuesday
}

var w: Weekday = Weekday.Monday
w = .Thuesday

Optional

var i: Int? //必須使用!手動拆包
i = 123
var j = i! + 123

var k: Int! //自動拆包
k = 34
var m = k + 34

struct

struct Student {
    var name: String
    var age: Int
}

//值類型
var st01 = Student(name: "Lisi", age: 23)
var st02 = st01  //復制,變成兩個

st01.name = "Zhangsan"

class

class Rectangle {
    var width: Double!  //存儲屬性
    var height: Double! {
        willSet {
            print("\(newValue) : \(height)")
        }

        didSet {
            print("\(height)")
        }
    }

    var area: Double {
        get {
            return width * height
        }

        set {

        }
    }
}

//類自動生成的構造函數(shù),沒有參數(shù)
//封裝、繼承、多態(tài)

class Animal {
    func eat() {}
}

//單繼承
class Dog: Animal {
    func newFunc() {}
    override func eat() {}
}

class Cat: Animal {
    override func eat() {}
}

var ani: Animal
ani = Animal()
ani.eat()

ani = Dog()
ani.eat()

ani = Cat()
ani.eat()

protocol

//約定一個類型必須要具備某種功能
//約束
//可以有方法、計算屬性
//不能有存儲屬性、不能實現(xiàn)方法
protocol BiteProtocol {
    var a: Int { get set }
    var b: Int { get }

    func bite()
}

class Tiger : BiteProtocol {}

var bp: BiteProtocol =  Tiger()

extension

//1. 將類拆分成多個部分
//2. 給已有類型增加新功能

運算符重載

func +(lhs: Tiger, rhs: Tiger) -> Tiger {
    return ....
}

閉包

//封裝一段可執(zhí)行代碼
//匿名函數(shù)

let c1 = {
    (a: Int) -> String in

    return "\(a)"
}
//閉包需要在調(diào)用的時候才會執(zhí)行
c1(23)

let c2: (Int) -> String = {
    "\($0)"
}

c2(34)

func createClosure() -> (Int) -> String {
    return { "\($0)" }
}

let c3 = createClosure()
c3(56)

createClosure()(56)

let v = {
    (a: Int) -> String in

    return "\(a)"
}(45)

lazy

//第一次使用時才加載

泛型(Generics)

元組

let a = (1, 3)
a.0

let b = (first: 23, second: 45)
b.first

Any/AnyObject

inout

defer

final

public/internal/private

@autoclosure

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Chapters: Enumerations - Advanced Operators Excerpt From:...
    碧波浮沉閱讀 712評論 0 1
  • 懶加載 格式 lazy var 變量: 類型 = { 創(chuàng)建變量代碼 }() 以 lazy var 開頭,閉包末尾跟...
    夜千尋墨閱讀 651評論 0 10
  • 基本語法: 定義變量和常量: let 和 var常量和變量的命名:你可以使用任何你喜歡的字符作為常量和變量名,包括...
    西風頌閱讀 1,601評論 1 9
  • 1、范型范型所解決的問題 函數(shù)、方法、類型:類,結(jié)構體,枚舉,元組類型,協(xié)議參數(shù),返回值,成員函數(shù)參數(shù),成員屬性類...
    我是小胡胡123閱讀 948評論 0 1
  • /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home...
    光劍書架上的書閱讀 4,196評論 2 8

友情鏈接更多精彩內(nèi)容