Swift中文教程(四)--函数与闭包

简介: 原文:Swift中文教程(四)--函数与闭包Function 函数   Swift使用func关键字来声明变量,函数通过函数名加小括号内的参数列表来调用。使用->来区分参数名和返回值的类型: 1 func greet(name: String, day: String) -> String { 2 return "Hello \(name), today is \(day).
原文: Swift中文教程(四)--函数与闭包

Function 函数

  Swift使用func关键字来声明变量,函数通过函数名加小括号内的参数列表来调用。使用->来区分参数名和返回值的类型:

1 func greet(name: String, day: String) -> String {
2     return "Hello \(name), today is \(day)."
3 }
4 greet("Bob", "Tuesday")

练习:

remove day参数,增加一个参数,比如:今天的午餐特色菜~

1 func greet(name:String, day:String) -> String{
2 
3   return "Hello \(name), today is \(day)."  //第二章说过用\()来内嵌变量
4 
5 }
6 
7 greet('Joe', '菩提玉斋')

 

 

  函数使用元组(tuple)来返回多个值:

1 func getGasPrices() -> (Double, Double, Double) {
2     return (3.59, 3.69, 3.79)
3 }
4 getGasPrices()

 

  函数还可以接收可变的参数个数,将这些参数收集在数组里面:

1 func sumOf(numbers: Int...) -> Int {
2     var sum = 0
3     for number in numbers {
4         sum += number
5     }
6     return sum
7 }
8 sumOf()
9 sumOf(42, 597, 12)

练习:

编写一个函数并求出其参数的平均值。

 

  函数是可以嵌套的,嵌套过的函数可以访问到外部函数声明过的变量,使用函数嵌套可以便于你组织过长或复杂的函数:

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

 

  在Swift中,函数是第一等类型,这意味着一个函数可以将另外一个函数作为它的返回值:

1 func makeIncrementer() -> (Int -> Int) {
2     func addOne(number: Int) -> Int {
3         return 1 + number
4     }
5     return addOne
6 }
7 var increment = makeIncrementer()
8 increment(7)

 

  函数还能接收其它函数作为它的参数:

 1 func hasAnyMatches(list: Int[], condition: Int -> Bool) -> Bool {
 2     for item in list {
 3         if condition(item) {
 4             return true
 5         }
 6     }
 7     return false
 8 }
 9 func lessThanTen(number: Int) -> Bool {
10     return number < 10
11 }
12 var numbers = [20, 19, 7, 12]
13 hasAnyMatches(numbers, lessThanTen)

  

  Closure 闭包

  

  函数其实是一种闭包的特殊情况,你可以写一个用花括号{}包裹的匿名闭包,用in来区分参数与主体的返回类型:

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

练习:

重写这个闭包来对所有奇数返回0

 

  闭包有多种简洁的写法。当返回值类型已知时,比如委托回调,你就可以省略它的参数类型,它的返回值类选,或者二者都略去,单行语句的闭包可以直接隐式地返回此一语句的值:

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

 

  你可以通过数字而不是名字来引用一个参数,这对于很短的闭包非常有用。一个闭包通过圆括号传递其最后一个参数到函数能立即生效:

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

 

 

谢谢,Swifter-QQ群:362232993,同好者进~ 

 

 

 

 

 

 

 

 

目录
相关文章
|
4天前
|
Swift iOS开发 Kotlin
苹果iOS新手开发之Swift中实现类似Kotlin的作用域函数
Swift可通过扩展实现类似Kotlin作用域函数效果。如自定义`let`, `run`, `with`, `apply`, `also`,增强代码可读性和简洁性。虽无直接内置支持,但利用Swift特性可达成相似功能。
23 7
|
1月前
|
Swift C++ 索引
Swift开发——简单函数实例
函数是编程的基础,用于封装特定功能的代码。它们有关键词func、函数名、参数列表(可为空)和返回类型。多返回值可通过元组、数组、inout参数或可选类型实现。例如,返回元组 `(value1, value2)`,数组 `[value1, value2]` 或使用可选数组 `[[Double]]?`。函数可以作为其他函数的参数,类似闭包或Lambda表达式。在Swift中,示例展示了通过元组、带索引的元组、数组和可选类型返回多个值的函数。还演示了如何使用inout参数交换变量值。
31 5
Swift开发——简单函数实例
|
2月前
Swift4.0判断本函数是否在其它类有相同的方法
Swift4.0判断本函数是否在其它类有相同的方法
26 0
|
2月前
|
存储 API Swift
【Swift开发专栏】Swift函数与闭包的实战应用
【4月更文挑战第30天】本文介绍了 Swift 中函数和闭包的实战应用。首先,函数的基本使用包括定义、参数与返回值、函数类型以及高级技巧如嵌套函数。接着,讨论了闭包的语法,包括无名函数、作为函数参数、简写形式和尾随闭包。最后,展示了函数和闭包在实战中的应用,如排序过滤集合和处理异步任务的回调。
|
2月前
|
存储 Swift
Swift 语言:什么是闭包(Closure)?它们与函数的区别是什么?
Swift 语言:什么是闭包(Closure)?它们与函数的区别是什么?
70 1
|
2月前
|
Swift
Swift中的函数
Swift中的函数
31 1
|
2月前
|
存储 Swift
Swift中,函数和闭包
Swift中,函数和闭包
48 1
|
9月前
|
Swift
swift 闭包简写实际参数名$0、$1等理解
swift 闭包简写实际参数名$0、$1等理解
48 0
|
9月前
|
Swift iOS开发
23 Swift中如何定义和使用函数
Swift中如何定义和使用函数
70 0
|
10月前
|
Swift
Swift Debug 和 Release 中 print() 函数调试切换
Swift Debug 和 Release 中 print() 函数调试切换
56 0