Swift学习笔记-函数和闭包
Posted 宇仔TuT
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift学习笔记-函数和闭包相关的知识,希望对你有一定的参考价值。
公司已经以Swift开发为主了,未来也要将遗留的OC转Swift,自己需要抽空看一些Swift的资料学习,我会把我觉得目前还没有搞的特别明白的内容写一写当做学习笔记。
函数和闭包
函数
声明格式
使用 func
来声明一个函数。通过在名字之后在圆括号内添加一系列参数来调用这个方法。使用 ->
来分隔形式参数名字类型和函数返回的类型。
func greet(person: String, day: String) -> String
return “Hello \\(person), today is \\(day).”
greet(person: “Bob”, day: “Tuesday”)
_和on的用法
_加在形参标签前面,调用的时候实参可以省略掉参数标签
on加在形参标签前面,调用的时候实参可以用on
或者任意标签
替代原来的参数标签
func greet(_ person: String, on day: String) -> String
return “Hello \\(person), today is \\(day).”
greet(“John”, on: “Wednesday”)
多返回值
func calculateStatistics(scores: [Int]) -> (min: Int, max: Int, sum: Int)
var min = scores[0]
var max = scores[0]
var sum = 0
for score in scores
if score > max
max = score
else if score < min
min = score
sum += score
return (min, max, sum)
let statistics = calculateStatistics(scores: [5, 3, 100, 3, 9])
print(statistics.sum)
print(statistics.2)
多参数(柯里化)
func sumOf(numbers: Int…) -> Int
var sum = 0
for number in numbers
sum += number
return sum
sumOf()
sumOf(numbers: 42, 597, 12)
内嵌函数
func returnFifteen() -> Int
var y = 10
func add()
y += 5
add()
return y
returnFifteen()
函数作为返回值
函数是一等公民,这意味着函数可以把函数作为值来返回。
func makeIncrementer() -> ((Int) -> Int)
func addOne(number: Int) -> Int
return 1 + number
return addOne
var increment = makeIncrementer()
increment(7)
函数作为参数
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(list: numbers, condition: lessThanTen)
闭包
使用花括号括起一个没有名字的闭包,用
in
关键词来连接返回类型
和实参
。
numbers.map(
(number: Int) -> Int in
let result = 3 * number
return result
)
简写
去掉参数类型
当闭包的类型可知时可去掉参数类型
,返回类型
let mappedNumbers = numbers.map( number in 3 * number )
print(mappedNumbers)
极简写法?
let sortedNumbers = numbers.sorted $0 > $1
print(sortedNumbers)
Swift学习群
欢迎加入本人的Swift学习微信群,一同互相监督学习,我微信:reese90
资源推荐
以上是关于Swift学习笔记-函数和闭包的主要内容,如果未能解决你的问题,请参考以下文章