Swift -3-函数&闭包

 

1.使用 func 声明一个函数。调用函数使用他的名字加上小括号中的参数列表。使用 -> 分隔参数的名字和返回值类型

func greet(name: String, day: String) -> String {

return "Hello \(name), today is \(day)."

}

greet("Bob", "Tuesday")

2.使用元组(tuple)来返回多个值。

func getGasPrices() -> (Double, Double, Double) {

return (3.59, 3.69, 3.79)

}

getGasPrices()

3.函数可以接受可变参数个数,收集到一个数组中。

func sumOf(numbers: Int...) -> Int {

var sum = 0

for number in numbers {

sum += number

}

return sum

}

sumOf()

sumOf(42, 597, 12)

 

4.函数可以嵌套。内嵌函数可以访问其定义所在函数的变量。你可以使用内嵌函数来组织代码,避免过长和过于复杂。

 1 func returnFifreen() ->Int{
 2       var y = 10
 3       func add(){
 4          y += 5
 5        } 
 6 
7 add() 8 return y 9 } 10 11 returnFifteen()

5.函数是第一类型的。这意味着函数可以返回另一个函数。

func makeIncrementer() -> (Int  -> Int){
func addOne(number:Int) ->Int{
    return 1 + number  
    }
        return addOne
}

var increment = makeIncrementer()//把一个函数赋的地址赋给另外一个变量
increment(
7)

 6.一个函数可以接受其他函数作为参数。

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]
hasAnyMatches(number,lessThanTen)

 

函数闭包

7.函数实际是闭包的特殊情况。你可以写一个闭包而无需名字,只需要放在大括号中即可。使用 in 到特定参数和主体的返回值。

numbers.map({
   (number:Int) -> Int in
   let result = 3 * number
   return result
})

编写闭包时有多种选项。当一个闭包的类型是已知时,例如代表回调,你可以忽略其参数和返回值,或两者。单一语句的闭包可以直接返回值。

numbers.map({number in 3 * number})

你可以通过数字而不是名字来引用一个参数,这对于很短的闭包很有用。一个闭包传递其最后一个参数到函数作为返回值。

sort([1, 5, 3, 12, 2]) { $0 > $1 }

posted @ 2015-02-18 15:18  王云鹏-iOS行者  阅读(270)  评论(0编辑  收藏  举报