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 }

时间: 2024-12-14 10:22:51

Swift -3-函数&闭包的相关文章

Swift(下) 函数 闭包 结构体

// 定义函数时 需要加一个 func关键字 sayHello 为函数名 括号里的为参数(参数名: 参数类型) -> 指的是返回值  {}大括号里面的表示函数体 func sayHello(name:String, number:Int)->String { return name } sayHello("dt", 99) // 我们可以给函数参数加一个标签 (外部参数) 用于提示我们需要输入一个什么样的参数 或者说是干什么用的 func sayGoodBye(peronN

Swift 语言函数

1 import Foundation 2 3 // 函数声明于实现 4 func sayHello(name){ 5 print("Hello \(name)") 6 } 7 8 // 函数调用 9 sayHello("哎我去") 10 11 12 // 支持多个返回值 13 // 多个返回值函数 14 func getNums()->(Int,Int){ 15 return(2,3) 16 } 17 18 // 多个返回值函数调用 19 let (a,b)

4 .Swift函数|闭包

在编程中,我们常把能完成某一特定功能的一组代码,并且带有名字标记类型叫做函数,在C语言中,我们知道函数名就是一个指针,它指向了函数体内代码区的第一行代码的地址,在swift中也具有同样的功效. 在Swift中函数的表现形式如下: 1. func 函数名(参数名1:参数类型,参数名2,参数类型)->返回值类型 {函数的实现部分} func sayHello()->Void { print("hello world") } //有参数,有返回值, func sayHello2(

Swift语法基础入门三(函数, 闭包)

Swift语法基础入门三(函数, 闭包) 函数: 函数是用来完成特定任务的独立的代码块.你给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这个名字会被用于“调用”函数 格式: func 函数名称(参数名:参数类型, 参数名:参数类型...) -> 函数返回值 { 函数实现部分 } 没有参数没有返回值 可以写为 ->Void 可以写为 ->() 可以省略 Void.它其实是一个空的元组(tuple),没有任何元素,可以写成() func say() -> V

Swift:函数和闭包

函数 函数是一个完成独立任务的代码块,Swift中的函数不仅可以像C语言中的函数一样有函数的参数和返回值,而且还支持嵌套,并且有函数参数默认值.可变参数等. 1 //定义一个函数,注意参数和返回值,如果没有返回值可以不写返回值或者写成Void.空元组()(注意Void的本质就是空元组) 2 func sum(num1:Int,num2:Int)->Int{ 3 return num1 + num2 4 } 5 6 sum(1, 2) 可以看到Swift中的函数仅仅表示形式有所区别(定义类似于Ja

窥探Swift之函数与闭包的应用实例

今天的博客算是比较基础的,还是那句话,基础这东西在什么时候都是最重要的.说到函数,只要是写过程序就肯定知道函数是怎么回事,今天就来讨论一下Swift中的函数的特性以及Swift中的闭包.今天的一些小实例中回类比一下Objective-C中的函数的写法等等.Swift中的函数还是有许多好用的特性的,比如输入参数,使用元组返回多个值, 定义形参名,设定默认参数以及可变参数等等一些好用的特性.而在Swift中的闭包就是Objective-C中的Block, 除了语法不通外,两者的用法是一样的.废话少说

Swift函数闭包

一.闭包的概念 计算机语言要支持闭包的前提条件有2个: 1.支持函数类型,能够将函数作为参数或返回值传递: 2.支持函数嵌套 示例: func caculate(opr : String)->(Int,Int)->Int { var result:(Int,Int)->Int switch(opr){ case "+": result={(a:Int,b:Int)->Int in return a+b } default: result = {(a:Int,b:

Swift学习(2函数闭包)

函数的定义 1.函数的基础写法 func 函数名(形参列表)->返回值类型 例: func sum(x:int ,y:int) -> int{ return x+y } print(sun(x:10,y:50)) 2.外部参数的使用,就是在形参前加一个名字,外部参数不会影响函数内部细节,外部参数会让外部调用看起来更加的直观 例:func sum(num1 x:int ,num2 y:int )-> int{ return x+y } print(sum(num1:30,num2:40))

swift官方文档中的函数闭包是怎么理解的?

官方文档中的16页: numbers.map({ (number: Int) -> Int in let result = 3 * number return result }) 不知道这个怎么用,更不知道它所说的要写个把奇数改成0的方法. swift官方文档中的函数闭包是怎么理解的?

窥探 Swift 之 函数与闭包的应用实例

今天的博客算是比较基础的,还是那句话,基础这东西在什么时候 都是最重要的.说到函数,只要是写过程序就肯定知道函数是怎么回事,今天就来讨论一下Swift中的函数的特性以及Swift中的闭包.今天的一些小实例 中回类比一下Objective-C中的函数的写法等等.Swift中的函数还是有许多好用的特性的,比如输入参数,使用元组返回多个值, 定义形参名,设定默认参数以及可变参数等等一些好用的特性.而在Swift中的闭包就是Objective-C中的Block, 除了语法不通外,两者的用法是一样的.废话