美文网首页程序员
学习swift高级函数的使用

学习swift高级函数的使用

作者: 墨_辰 | 来源:发表于2019-03-04 10:32 被阅读0次

前两天在看队列和栈的时候没有看懂最后的reduce函数觉得很遗憾,所以就学习了一下swift提供的高级函数,Map,Flatmap,filter和reduce四个函数。这四个函数配合闭包使用会很方便。
swift自动为闭包提供参数名缩写功能,可以直接通过0和1等来表示闭包中的第一个第二个参数,并且对应的参数类型会根据函数类型来进行判断。

Map

map方法作用是把数组[T]通过闭包函数把每一个数组中的元素变成U类型的值,最后组成数组[U]。flatMap 更加强大,可以传入N个处理方法,将处理后得到数据,组合到同一个数组中
定义:func map(transform: (T) -> U) -> [U]

func map<T, U>(xs: [T], f: T -> U) -> [U]
{ 
    var result: [U] = []
    for x in xs 
    {
        result.append(f(x)) 
    }
    return result 
}

实例:
将数组中每个数字都加10,获得一个新的数组:

let numberArray = [1,2,3,4,5]

//采用闭包的方式
var result = numberArray.map({($0) + 10})
print(result)

//flatMap,2个处理方法
var resultArray = numberArray.flatMap({["\($0)个","\($0 )只"]})
print(resultArray)

filte

filter就是筛选的功能,参数是一个用来判断是否筛除的筛选闭包,根据闭包函数返回的Bool值来过滤值。为True则加入到结果数组中。
定义:func filter(includeElement: (T) -> Bool) -> [T]
例子:找出数组中大于2的数字

let numberArray = [1,2,3,4,5]
var filteredArray = numberArray.filter({$0 > 2})
print(filteredArray)

reduce

reduce的作用给定一个类型为U的初始值,把数组[T]中每一个元素传入到combine的闭包函数里面,通过计算得到最终类型为U的结果值。
定义:func reduce(initial: U, combine: (U, T) -> U) -> U
例子:求数组中所有数字的平方和

let numberArray = [1,2,3,4,5]
var sum = numberArray.reduce(0, {$0 + $1 * $1})
print(sum)

实现一下拼接地址:

let array = ["中国", "江苏", "南京", "江宁区"]
let address = array.joined(separator: "/")
let add = array.reduce( "",  {$0 + "/" + $1 } )

print(add)

添加一道面试题:

题目:实现一个函数,求0~100以内(包括0和100)中为偶数且正好是其他数字平方的数字。
代码实现:

//直接写法
func evenSquareNumbers(from : Int, to : Int) -> [Int]{
    var result = [Int]()
    
    for num in from...to where num % 2 == 0 {
        if (from...to).contains(num * num) {
            result.append(num * num)
        }
    }
    
    return result
}
//使用map和filter实现
(0...10).map { $0 * $0 }.filter { $0 % 2 == 0 }

相关文章

  • 学习swift高级函数的使用

    前两天在看队列和栈的时候没有看懂最后的reduce函数觉得很遗憾,所以就学习了一下swift提供的高级函数,Map...

  • Swift5.x-闭包(中文文档)

    引言 继续学习Swift文档,从上一章节:函数,我们学习了Swift函数相关的内容,如函数的定义和使用、函数参数、...

  • swift学习笔记②

    Swift学习笔记 - 文集 语法篇 一、函数 函数定义 Swift 定义函数使用关键字 func,functio...

  • Swift学习笔记(二)

    Swift函数 Swift函数包含参数类型和返回值类型 函数定义 Swift使用关键字func定义函数。 函数定义...

  • Swift 高级函数

    map() : 就是接受一个闭包作为规则,自动遍历集合的每一个元素,使用闭包的规则去处理这些元素,生成一个结构相同...

  • C++函数指针和Swift的函数对象

    C++函数指针和Swift的函数对象 在C++中学习函数指针式非常痛苦的事情,而在Swift里面学习函数指针则是非...

  • swift002

    有来写学习swift的笔记了。。。。 函数的默认值 没有返回值的函数 使用常量记录函数 闭包 在OC中block是...

  • Swift学习笔记(二)

    今天继续 Swift 的学习: 6、Swift 函数的表达方式

  • Swift 随机数

    Swift 没有提供专用了Swift格式的数学函数,而是沿用C标准库的数学函数。 随机数使用函数 func arc...

  • Swift:基础(十五)函数

    Swift 函数 Swift 函数用来完成特定任务的独立的代码块。 Swift使用一个统一的语法来表示简单的C语言...

网友评论

    本文标题:学习swift高级函数的使用

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