swift2 0 學習筆記four

2021-07-11 11:32:34 字數 3082 閱讀 1122

override

func viewdidload()   //one two three

let mychatacters :[character] = ["d","l","g"]

let str = string(mychatacters)

print(str) //dlg

//建立乙個帶有預設值的陣列

let tt=[double](count:6 , repeatedvalue:1.0)

print

(tt)//[1.0, 1.0, 1.0, 1.0, 1.0, 1.0]

//swift 中的 set 型別被寫為 set,這裡的 element 表示 set 中允許儲存的型別

let aa : set

= ["one","two","three"]

print

(aa) //["one", "three", "two"]

var bb : set = ["one",123,"three"]

bb.insert("two")

if bb.contains("one")

if bb.isemptyelse

} //one three two

//閉包是自包含的函式**塊,可以在**中被傳遞和使用。swift 中的閉包與c 和objective-c 中的**塊(blocks)以及其他一些程式語言中的匿名函式比較相似

//全域性函式是乙個有名字但不會捕獲任何值的閉包

//巢狀函式是乙個有名字並可以捕獲其封閉函式域內值的閉包

//閉包表示式是乙個利用輕量級語法所寫的可以捕獲其上下文中變數或常量值的匿名閉包

//閉包表示式語法有如下一般形式:

//       

letnames = ["chris", "alex", "ewa", "barry", "dalla"]

let reversed = names.sort()

let reversed2 = names.sort()

let reversed3 = names.sort()

//swift 自動為內聯閉包提供了引數名稱縮寫功能,您可以直接通過$0 , $1 , $2 來順序呼叫閉包的引數

let reversed4 = names.sort()

print

(reversed4)//["ewa", "dalla", "chris", "barry", "alex"]

print

(reversed3)//["ewa", "dalla", "chris", "barry", "alex"]

print

(reversed2)//["ewa", "dalla", "chris", "barry", "alex"]

print

(reversed)//["ewa", "dalla", "chris", "barry", "alex"]

//在內聯閉包表示式中,函式和返回值型別都寫在大括號內,而不是大括號外

//尾隨閉包

//如果您需要將乙個很長的閉包表示式作為最後乙個引數傳遞給函式,可以使用尾隨閉包來增強函式的可讀性。尾隨閉包是乙個書寫在函式括號之後的閉包表示式,函式支援將其作為最後乙個引數呼叫:

func addtest(onestr:string,addfunc:(int,int)->int)

}addtest("+", addfunc:)//10+15= 25

addtest("+")//

這種形式就是尾隨閉包

addtest("+")//

這種形式就是尾隨閉包

//尾隨閉包必須是引數列表的最後乙個引數

//如果函式只需要閉包表示式乙個引數,當您使用尾隨閉包時,您甚至可以把() 省略掉:

//函式或閉包賦值給乙個常量還是變數,您實際上都是將常量或變數的值設定為對應函式或閉包的引用

//指向閉包的引用是乙個常量,而並非閉包內容本身

//非逃逸閉包非逃逸閉包只能在函式體中被執行,不能脫離函式體執行

//當閉包作為函式的引數傳入時,很有可能這個閉包在函式返回之後才會被執行,這就是逃逸閉包。

//非逃逸閉包

func somefunctionwithnoescapeclosure(@noescape closure: () -> void)

//逃逸閉包

var completionhandlers: [() -> void] =

func somefunctionwithescapingclosure(completionhandler: () -> void)

//將閉包標註為@noescape使你能在閉包中隱式的引用self

func dosomething()

somefunctionwithnoescapeclosure }

dosomething()

print(***)//200

completionhandlers[0]()

print

(***

)//100 (執行閉包)

//自動閉包

//自動閉包是一種自動建立的閉包,用於包裝傳遞給函式作為引數的表示式。這種閉包不接受任何引數,當它被呼叫的時候,會返回被包裝在其中的表示式的值。這種便利語法讓你能夠用乙個普通的表示式來代替顯式的閉包,從而省略閉包的花括號。

var customersinline = ["chris", "alex", "ewa", "barry", "daniella"]

print(customersinline.count)

// prints "5"

let customerprovider =

print(customersinline.count)

// prints "5"

print("now serving \(customerprovider())!")

// prints "now serving chris!"

print(customersinline.count)

// prints "4"

//customerprovider的型別不是string,而是() -> string,乙個沒有引數且返回值為string的函式。 }

var *** = 10

swift2 0 學習筆記Two

var myarray 1,4,6,5,2 var sc 0 for str in myarray sc 1 print myarray,string sc 1,4,16,15,2 5 let optionalstr string?hello world print optionalstr nil ...

swift2 0 學習筆記Thirteen

import uikit class viewcontroller uiviewcontroller else 該閉包引用了 self 即強引用了 htmlelement 例項,lazy var ashtml void string 該變數又強引用了閉包 paragraph nil 不會觸發 dei...

swift2 0 學習筆記Seventeen

import uikit 結構體和列舉是值型別 值型別被賦予給乙個變數 常量或者被傳遞給乙個函式的時候 其值會被拷貝。struct blackjackcard 巢狀定義列舉 rank enum rank int varvalues values blackjackcard 的屬性和方法 letran...