Functions and Closures
使用func來聲明函數(shù),通過括號(hào)參數(shù)列表的方式來調(diào)用函數(shù),用 --> 來分割函數(shù)的返回類型,參數(shù)名和類型,例如:
func greet(name: String, day: String) -> String { return "Hello /(name), today is /(day)." }greet("Bob", day: "Tuesday") //這是swift文檔中的調(diào)用方法,但是我在xcode6中編寫的時(shí)候總報(bào)錯(cuò),所以采用了下面的方式greet("Bob", day: "Tuesday") //使用這種方式不會(huì)錯(cuò)誤
使用一個(gè)元組一個(gè)函數(shù)可以返回多個(gè)值
上面的方法我不知道用什么來接收返回的值,請(qǐng)高手支招
func 的參數(shù)也是可變的,可以把多個(gè)參數(shù)放在一個(gè)數(shù)組中
func sumOf(sumbers:Int...) -> Int { var sum = 0 for number in sumbers { sum += number } return sum }println(sumOf()) //return 0println(sumOf(42, 597, 12)) //return 651
函數(shù)可以嵌套,嵌套的函數(shù)可以訪問在外部函數(shù)中聲明的變量,你可以使用嵌套函數(shù)來解決復(fù)雜的邏輯:
func returnFifteen() -> Int { var y = 10 func add() { y += 5 } add() return y; } println(returnFifteen()) //return 15
函數(shù)是一個(gè) first-class 類型,這意味著函數(shù)的返回值可以是另一個(gè)函數(shù):
func makeIncrementer() -> (Int -> Int) { func addOne(number: Int) -> Int { return 1 + number } return addOne }var increment = makeIncrementer()increment(7)//上面的代碼一直報(bào)錯(cuò),不知道什么原因//錯(cuò)誤:Command /applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 254//如果哪位高手知道,請(qǐng)指教
一個(gè)函數(shù)可以作為另一個(gè)函數(shù)作為其參數(shù)
func hasAnyMatches(list: Int[],condition: Int-> Bool) -> Bool { for item in list { if(condition(item)) { return true } } return false } func lessThanTen(number: Int) -> Bool { return number < 10; } var numbers = [20,19,7,12] let temp = hasAnyMatches(numbers, lessThanTen) println(temp)//這個(gè)和上面一樣的錯(cuò),也有事我的xcode6 有問題
你可以通過{}來些一個(gè)閉包
numbers.map({ (number: Int) -> Int in let result = 3 * number return result })
這個(gè)閉包有的時(shí)候可以寫的更加簡(jiǎn)潔,比如你知道他的返回類型或者其他的
numbers.map({ number in 3 * number })
sort([1, 5, 3, 12, 2]) { $0 > $1 }
上面的閉包 沒搞明白。。。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注