swift 常用高阶函数分享

map

var arr = [1, 2, 3]
//map函数是有返回值的,想要arr里面的值map过去需要arr重新接收新值
arr.map { (a : Int) -> Int in
  return a * 2
}
//这种写法只是尾随闭包的简写。。
arr = arr.map {
  $0 * 2
}

flatMap

//floatMap函数可以降维
var arr1 = [[1, 2], [4, 5], [6, 7]]
var aaa = arr1.flatMap {
  $0
}
//floatMap函数去空作用,还会解包数据
var arr2 = ["swift", nil, "java"]

var bbb = arr2.flatMap {
  $0
}

filter

//filter 函数用作对容器内元素进行筛选
var arr3 = ["swift", "java", "oc", "python"]
arr3 = arr3.filter {
  guard $0.characters.count > 2 else {
    return false
  }
  return true
}

reduce

//reduce 函数用作对容器内元素进行操作,将元素字符串拼接
var arr4 = [2, 3, 4, 5]
//arr4.reduce("", {
//  return $0 == "" ? String($1) : $0 + String($1)
//})
//用reduce求和
arr4.reduce(0) {
  return $0 + $1
}
// 将数组中的每个字符串用‘,'拼接
let arr5 = ["Objective-C", "Swift", "HTML", "CSS", "JavaScript"]

// $0表示计算后的结果, $1表示数组中的每一个元素
arr5.reduce("", {
  return $0 == "" ? $1 : $0 + "," + $1
})

所以,Swift 语言的高阶函数以及闭包可以 capture 外部变量的特性,使得代码逻辑可以以函数作为主体来进行封装,这将使得我们的代码组织更加灵活。

当然,如果滥用,这也会造成代码组织变得更加混乱。

(0)

相关推荐

  • Swift的74个常用内置函数介绍

    Swift包含了74个内置函数,但在 The Swift Programming Langage 一书中只介绍了其中的7个,其它的都没有在文档中体现. 这篇文章列举出了所有的Swift库函数.文中所谓的 内置函数 是指无需引入任何模块(比如说Fundation等)即可以直接使用的函数. 下面先来看看7个在文档中提到的库函数: 下面列出一些很实用,但未在文档中体现的库函数: 复制代码 代码如下: //断言,参数如果为`true`则继续,否则抛出异常 //assert mentioned on pa

  • 深入理解swift变量和函数

    Swift 函数用来完成特定任务的独立的代码块. Swift使用一个统一的语法来表示简单的C语言风格的函数到复杂的Objective-C语言风格的方法. 函数声明: 告诉编译器函数的名字,返回类型及参数. 函数定义: 提供了函数的实体. func getNums()->(Int,Int){ //swift函数可以返回多个变量 return (2,3) } let (a,b) = getNums() //let是常量,一旦赋值后不可改变, var是变量 println(a) //输出 2 var

  • Swift的函数式编程详解

    Swift 相比原先的 Objective-C 最重要的优点之一,就是对函数式编程提供了更好的支持. Swift 提供了更多的语法和一些新特性来增强函数式编程的能力,本文就在这方面进行一些讨论. Swift 概览 对编程语言有了一些经验的程序员,尤其是那些对多种不同类型的编程语言都有经验的开发者, 在学习新的语言的时候更加得心应手.原因在于编程语言本身也是有各种范式的, 把握住这些特点就可以比较容易的上手了. 在入手一门新的语言的时候,一般关注的内容有: 1.原生数据结构 2.运算符 3.分支控

  • 浅谈在Swift中关于函数指针的实现

    Swift没有什么? 苹果工程师给我建的唯一一堵墙是:在Swift中没有任何办法获得一个函数的指针: 注意,C函数指针不会导入到Swift中(来自"Using Swift with Cocoa and Objective-C") 但是我们怎么知道这种情况下钩子的地址和跳到哪呢?让我们深入了解一下,并且看看Swift的func在字节码层面上的是什么. 当你给一个函数传递一个泛型参数时,Swift并没有直接传递它的地址,而是一个指向trampoline函数(见下文)并带有一些函数元数据信息

  • Swift语言中的函数学习教程

    函数是一个组织在一起语句集合,以执行特定任务.Swift 函数类似于简单 C 函数以及复杂的 Objective C 语言函数. 它使我们能够通过函数调用内部的局部和全局参数值. 像其他任何语言一样 swift 函数也遵循相同的步骤. 函数声明:它告诉编译器有关的函数的名称,返回类型和参数. 函数定义:它提供函数的实际主体. Swift 函数包含参数类型和返回类型. 函数定义 在Swift 语言中函数是由 "func" 关键字来定义.当一个新定义函数时,它可能需要一个或几个值作为函数输

  • 详解Swift中的函数及函数闭包使用

    一.引言 函数是有特定功能的代码段,函数会有一个特定的名称调用时来使用.Swift提供了十分灵活的方式来创建与调用函数.事实上在Swift,每个函数都是一种类型,这种类型由参数和返回值来决定.Swift和Objective-C的一大区别就在于Swift中的函数可以进行嵌套. 而Swift中的闭包是有一定功能的代码块,这十分类似于Objective-C中的block语法.Swift中的闭包语法风格十分简洁,其作用和函数的作用相似. 二.函数的创建与调用 函数通过函数名,参数和返回值来定义,参数和返

  • Swift中的可变参数函数介绍

    可变参数函数指的是可以接受任意多个参数的函数,我们最熟悉的可能就是 NSString 的 -stringWithFormat:方法了.在 Objective-C 中,我们使用这个方法生成字符串的写法是这样的: 复制代码 代码如下: NSString *name = @"Tom"; NSDate *date = [NSDate date]; NSString *string = [NSString stringWithFormat:                 @"Hell

  • Swift心得笔记之函数

    参数 外部变量名 一般情况下你可以不指定外部变量名,直接调用函数: 复制代码 代码如下: func helloWithName(name: String, age: Int, location: String) {     println("Hello \(name). I live in \(location) too. When is your \(age + 1)th birthday?") } helloWithName("Mr. Roboto", 5, &

  • Swift教程之函数详解

    函数是执行特定任务的代码自包含块.给定一个函数名称标识, 当执行其任务时就可以用这个标识来进行"调用". Swift的统一的功能语法足够灵活来表达任何东西,无论是甚至没有参数名称的简单的C风格的函数表达式,还是需要为每个本地参数和外部参数设置复杂名称的Objective-C语言风格的函数.参数提供默认值,以简化函数调用,并通过设置在输入输出参数,在函数执行完成时修改传递的变量. Swift中的每个函数都有一个类型,包括函数的参数类型和返回类型.您可以方便的使用此类型像任何其他类型一样,

  • swift 常用高阶函数分享

    map var arr = [1, 2, 3] //map函数是有返回值的,想要arr里面的值map过去需要arr重新接收新值 arr.map { (a : Int) -> Int in return a * 2 } //这种写法只是尾随闭包的简写.. arr = arr.map { $0 * 2 } flatMap //floatMap函数可以降维 var arr1 = [[1, 2], [4, 5], [6, 7]] var aaa = arr1.flatMap { $0 } //float

  • 详解python内置常用高阶函数(列出了5个常用的)

    高阶函数是在Python中一个非常有用的功能函数,所谓高阶函数就是一个函数可以用来接收另一个函数作为参数,这样的函数叫做高阶函数. python内置常用高阶函数: 一.函数式编程 •函数本身可以赋值给变量,赋值后变量为函数: •允许将函数本身作为参数传入另一个函数: •允许返回一个函数. 1.map()函数 是 Python 内置的高阶函数,它接收一个函数 f 和一个 list, 并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回 def add(x): ret

  • vue常用高阶函数及综合实例

    一. 常用的数组的高阶函数 假设, 现在有一个数组, 我们要对数组做如下一些列操作 找出小于100的数字: 将小于100的数字, 全部乘以2: 在2的基础上, 对所有数求和: 通常我们会怎么做呢? <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> &l

  • JS 5高阶函数分享

    目录 1.前言 2.递归 3.回调函数 3.1匿名回调函数 3.2带参数的回调函数 3.3回调函数的优缺点 4.自调函数 5.为值的函数 6.闭包 1.前言 在JavaScript中,函数实际上也是一个数据,也就是说函数也可以赋值给一个变量.本篇文章就来介绍一些JavaScript中的高阶函数的用法. 2.递归 所谓的递归,就是指函数自己调用自己:用一个故事来说呢就是:从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?"从前有座山,山里有座庙,庙里有个老和尚,正在给小和

  • Kotlin中的高阶函数深入讲解

    前言 在Kotlin中,高阶函数是指将一个函数作为另一个函数的参数或者返回值.如果用f(x).g(x)用来表示两个函数,那么高阶函数可以表示为f(g(x)).Kotlin为开发者提供了丰富的高阶函数,比如Standard.kt中的let.with.apply等,_Collectioins.kt中的forEach等.为了能够自如的使用这些高阶函数,我们有必要去了解这些高阶函数的使用方法. 函数类型 在介绍常见高阶函数的使用之前,有必要先了解函数类型,这对我们理解高阶函数很有帮助.Kotlin 使用

  • Python高阶函数、常用内置函数用法实例分析

    本文实例讲述了Python高阶函数.常用内置函数用法.分享给大家供大家参考,具体如下: 高阶函数: 允许将函数作为参数传入另一个函数: 允许返回一个函数. #返回值为函数的函数 sum=lambda x,y:x+y sub=lambda x,y:x-y calc_dict={"+":sum,"-":sub} def calc(x): return calc_dict[x] print(calc('-')(5,6)) print(calc('+')(5,6)) #参数

  • python lambda函数及三个常用的高阶函数

    进行编程时,一般我们会给一个函数或者变量起一个名字,该名称是用于引用或寻址函数变量.但是有一个低调的函数,你不需要赋予它名字,因此该函数也叫匿名函数.该函数就是Python中的Lambda函数,下面就来为大家解析python-lambda函数,三个常用的高阶函数. 为什么要使用Python Lambda函数? 匿名函数可以在程序中任何需要的地方使用,但是这个函数只能使用一次,即一次性的.因此Python Lambda函数也称为丢弃函数,它可以与其他预定义函数(如filter(),map()等)一

  • Python中常用的高阶函数实例详解

    前言 高阶函数指的是能接收函数作为参数的函数或类:python中有一些内置的高阶函数,在某些场合使用可以提高代码的效率. lambda 当在使用一些函数的时候,我们不需要显式定义函数名称,直接传入lambda匿名函数即可.lambda匿名函数通常和其他函数搭配使用. 比如可以直接使用如下的lambda表达式计算当x=3时,y = x * 3 + 5的函数值. In [1]: (lambda x: x * 3 + 5)(3) Out[1]: 14 map map函数将一个函数和序列/迭代器(可以传

  • 深入浅出的聊聊Swift高阶函数

    目录 初探高阶函数 map compactMap compactMapValues flatMap filter reduce 组合使用 总结 初探高阶函数 在 Swift 中,高阶函数一共有下面几个: map:对给定数组每个元素,执行闭包中的映射,将映射结果放置在数组中返回. flatMap:对给定数组的每个元素,执行闭包中的映射,对映射结果进行合并操作,然后将合并操作后的结果放置在数组中返回. compactMap:对给定数组的每个元素,执行闭包中的映射,将非空的映射结果放置在数组中返回.

  • 分享5个JS 高阶函数

    目录 1.前言 2.递归 3.回调函数 3.1匿名回调函数 3.2带参数的回调函数 3.3回调函数的优缺点 4.自调函数 5.为值的函数 6.闭包 1.前言 在JavaScript中,函数实际上也是一个数据,也就是说函数也可以赋值给一个变量.本篇文章就来介绍一些JavaScript中的高阶函数的用法. 2.递归 所谓的递归,就是指函数自己调用自己:用一个故事来说呢就是:从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?"从前有座山,山里有座庙,庙里有个老和尚,正在给小和

随机推荐