Swift学习笔记(一)-函数和闭包

公司已经以Swift开发为主了,未来也要将遗留的OC转Swift,自己需要抽空看一些Swift的资料学习,我会把我觉得目前还没有搞的特别明白的内容写一写当做学习笔记。

函数和闭包

函数

声明格式

使用 func来声明一个函数。通过在名字之后在圆括号内添加一系列参数来调用这个方法。使用 ->来分隔形式参数名字类型和函数返回的类型。

func greet(person: String, day: String) -> String {
    returnHello \(person), today is \(day).}
greet(person:Bob, day:Tuesday)
_和on的用法

_加在形参标签前面,调用的时候实参可以省略掉参数标签
on加在形参标签前面,调用的时候实参可以用on或者任意标签替代原来的参数标签

func greet(_ person: String, on day: String) -> String {
    returnHello \(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

资源推荐

GitHub第三方资源库整理(Swift篇)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值