美文网首页
波哥Swift学习9.5~9.8学习总结

波哥Swift学习9.5~9.8学习总结

作者: Bryant_2423 | 来源:发表于2017-09-09 22:58 被阅读0次

这几次课程的内容对我来说最大的收获是函数类型与如何使用闭包让代码更加简洁。


本次内容有:

  • 函数类型
  • 闭包

函数类型

函数类型:包含参数和返回类型的简写形式,可以像普通变量那样使用,一般用于函数式编程. 🌰(Int,Int) -> Int
举个例子:定义一个计算函数calculate来进行+ - * / 运算,使用哪种运算取决于method 此处method是一个函数,在这里函数可以当做一个变量来使用。

func calculate(x: Double, y: Double, method: (Double, Double) -> Double) -> Double {
    return method(x, y)
}

比如我要做加法运算:

func calculate(x: Double, y: Double, method: (Double, Double) -> Double) -> Double {
    return method(x, y)
}

func add(x: Double, y: Double) -> Double {
    return x + y
}

let answer = calculate(x: 5, y: 9, method: add)

这里我们把add函数当做了一个变量进行调用。但这样的写法过于繁琐,我们可以使用闭包让代码更简洁,也就是说不需要add函数。

func calculate(x: Double, y: Double, method: (Double, Double) -> Double) -> Double {
    return method(x, y)
}

let answer = calculate(x: 5, y: 9) { (x, y) -> Double in
    return x + y
}

还可以再简洁一点:

let answer = calculate(x: 5, y: 9) { $0 + $1 }

如果你想做乘法也没问题:

let answer = calculate(x: 5, y: 9) { $0 * $1 }

闭包

不得不说,Swift的闭包的确很棒!这里我们以系统自带的sorted方法讲解闭包。
比如我要对一个数组排序:

let numbers = [2,4,1,8,3,7]
numbers.sorted()

系统自带的方法只能从小到大排序,如果我想从大到小呢?

let numbers = [2,4,1,8,3,7]

func bigToSmall(x: Int, y: Int) -> Bool{
   return x > y
}
numbers.sorted(by: bigToSmall)

Swift追求简洁,其实函数bigToSmall的定义是多余的。可以使用闭包来写。

numbers.sorted { (x, y) -> Bool in
    return x > y
}

使用闭包表达式使代码达到最简:

numbers.sorted { $0 > $1 }

$0代表第一个(前面一个)数,$2代表第二个数(后面一个),$0 > $1表示前面的数字是否大于后面的一个数字。闭包中,函数类型,返回值类型均可自动推断

拓展:在一个字符串数组中,筛选出符合条件的字符串

let strArray = ["Apple", "Twitter", "dsskdalo", "NNN", "Google"]

//筛选出字符数量<=5的字符串
let result = strArray.filter { $0.count <= 5 }
result

//筛选出包含字符“l”的字符串
let result2 = strArray.filter { $0.contains("l") }
result2

//筛选出首字符为“T”的字符串
let result3 = strArray.filter { $0[$0.startIndex] == "T" }
result3

相关文章

  • 波哥Swift学习9.5~9.8学习总结

    这几次课程的内容对我来说最大的收获是函数类型与如何使用闭包让代码更加简洁。 本次内容有: 函数类型 闭包 函数类型...

  • 波哥Swift学习8.30~9.4学习总结

    对于我来说,Swift已经不是一门陌生的语言了,不过这几天听波哥讲Swift4.0,又对Swift这门语言有了进一...

  • 二月份总结

    学习小结 (单位:小时) 中文:9.8 高英:92.5 学习总结:3.4 其它:10 游泳/m:14,200 跑步...

  • 四月总结

    四月学习小结 (单位:小时) 中文:8.1 高英:39.92 英语写作:9.5 学习总结:10.4 练字:10.4...

  • Swift 4.0 问题小结

    最近跟着刀哥用 Swift 写微博,顺便学习了一下 Swift 4.0 ,遇到了一些问题,特此小结,总结一下,供跟...

  • Swift 4.0 基础学习总结(二)

    在 Swift 4.0 基础学习总结(一)中,我们学习的Swift中的基本数据类型以及控制流,Swift简介的语法...

  • 2020年整体规划

    技术:MJ小马哥基础视频 学习完MJ 逆向 Swift 视频学习 Flutter 学习一套 生活: 日语 --...

  • 9月沙龙店行程安排表

    9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 十三款产品(闪闪) 9.9 水机...

  • Swift学习总结

    Swift学习总结 现在学习Swift这门语言也两周了,也算开了个头了,刚开始学习可能对以前有过其它语言学习经验的...

  • 以撸代码的形式学习Swift-0:说明和目录

    这是我学习Swift的一个笔记和总结,以playground的形式放在我的github上,学习的版本是swift ...

网友评论

      本文标题:波哥Swift学习9.5~9.8学习总结

      本文链接:https://www.haomeiwen.com/subject/eiwajxtx.html