天天看點

SWIFT總結SWIFT總結

SWIFT總結

一、類型:

swift是強類型的,也就說在編譯器編譯的時候知道某個變量的類型,如果兩個變量的類型不一樣不能進行操作,比如:

int a = 0; 

float b = 2.5; 

int total = a + b; 

 // 編譯時會報錯      

二、字元串操作:

int peopleCount = 4;
"There are \(peopleCount) peoples"      

OC中字元串的長度length和swift中的length傳回的長度有可能不一樣,通過utf16count傳回的才能和OC的length相同 字元串的拼接用加号“+”,比較相等用等号”==” ###三、類型推斷: 編譯器可以根據變量的值來推斷出其類型,這時候我們不需要明确指定它的類型,比如:

var count: Int = 4;
var count = 4;
// 這兩條語句是等價的      

###四、IF語句 if語句中的條件必須顯示的表示為true或false,否則會報錯,比如:

var a = 3
if(3 > 0){
  doSomething()
}
不能寫成
if( a ){
  doSomething()
}      

###五、類型 1. Int, Int8, Int16, Int32是不同類型,它們之間不能做運算操作; 2. float 是32位, double是64位,編譯器總是将某個字推斷成double類型的,而不是float型的 ###六、數組 數組是存儲相同類型的有序清單。 定義:

var peoples: [String] = [] // 顯示類型
var peoples = [String]() // 隐式類型      

注意: 數組作為函數參數傳遞的時候,是值傳遞,至于數組中的元素是按照何種方式傳遞,取決于數組中元素的類型是值類型還是引用類型。 ###七、字典 存儲無序相同類型的集合

var people: [String: someClass] = [:]
var people = [String: someClass]()
var hight = ["wsy": 20]      

###八、可選類型 聲明的時候加上一個問号“?”,如果通路可選類型必須進行拆包,否則會報錯,使用歎号“!”拆包,比如:

let dict = ["name" : "wsy"]
let name = dict["name"]
let greet = "Hello" + name!
// 直接對name進行拆包可能會導緻奔潰,因為name可能是nil,應該這樣寫
if let myName = name! {
   let greet = "Hello" + myName
}      

###九、泛型:

func maxValue (a: T, b: T) ->T {
    if a > b {
    return a
    }
    return b
}      

###十、元組: 包含不同類型的值,可以作為函數的傳回值,比如:

let ice = (2, "Hello", "World")
// 通路: ice.0  ice.1 ...
let ice2(count:2, name:"Hello", greet: "World")
// 通路: ice2.count  ice2.name ...
注意:如果某個值在分解的時候不需要,可以使用"_"替代
      

十一、Switch語句于OC的不同

  • 不需要break;
  • 使用fallthrough貫穿到下一個分支;
  • case:可比對範圍、值、元組等,如:case 0…10, case: (0, , );
  • 可使用where,比如:case let(index, size) where index > 3;

十二、類初始化

類初始化的時候,需要注意一些問題:

- 類中的屬性名相同時,需要使用self.

- 在init方法中可以改變常量的值

- 初始化需要初始化所有的屬性,如果有預設值可以不初始化

- 便捷初始化方法是指以來其他初始化方法實作初始化

十三、函數

外部參數:

func hello(externalName localName: Int){
}      

如果想改變參數,必須聲明為var類型:

func hello(var localName: Int){
   localName = 10
}      

外部參數名和内部參數名相同用“#”:

func hello( #localName: Int){
}      

參數預設值,用“=”号,如果參數沒有的時候為預設值:

func hello(externalName localName: Int = 5){
}      

十四、閉包:

定義:{(參數清單) -> 傳回值類型 in 語句}

使用函數:
func customSort() -> (Int, Int) -> Bool{
    func mySort( a: Int, b: Int) -> Bool{
           return a       

十五、寫在最後

  • 類方法使用class關鍵字
  • 使用final防止被重寫
  • 當struct中的方法要改變struct中值的時候,該方法必須适應關鍵字mutating
  • 存儲屬性:無getter盒setter方法
  • 計算屬性:實作getter盒setter方法
  • 延遲屬性:某個屬性在第一次使用的時候初始化
  • var a: bool {get, set} // 可讀可寫
  • 帶隐式拆箱的可空類型,用歎号代替文化,這樣使用的時候不需要拆箱,但是隻要建立可就必須有值
  • 可空鍊,多個可空類型嵌套
  • -

繼續閱讀