前言:当前只做理解性的常规背书,根据不断深入学习会不断丰富解读内容,欢迎评论提意见

函数式编程:Functional Programming

1 基本解释:

函数式编程 是一种思维模式,一种编程思想,一种编程方式,一种编程范式

2 基本特性:

不使用可变的变量处理 赋值,循环和其他命令式控制结构去编程:

好处:2.1 函数即不依赖外部的状态也不修改外部的状态:函数调用的结果不依赖调用的时间和空间状态,这样写的代码容易进行推理,不容易出错。这使得单元测试和调试都更容易。

      2.2   线程安全:函数式编程可以帮我们解决这一痛点,每一个纯函数都是线程安全 

时间状态:变量一旦有了状态,它就有可能随着时间而发生变化,时间是最不可预知的因素

空间状态:如果把一个线程看成一个独立的空间,在程序的世界当中,空间会产生交叉重叠。一个变量如果可以被两个线程同时访问,它的值如果可以在两个空间发生变化,这个变量同样变得很危险

3 常规关键字

3.1高阶函数:参数为函数或返回值为函数的函数  //函数式编程就是指这种高度抽象的编程范式

3.2惰性求值:就是我们常常口语化的“懒加载”,表达式赋值给变量时,并不会马上参与计算求值,是当变量被调用时候才会计算。通过按需加载计算提升性能

4感悟:(1)函数式编程并不会减少我们的代码量,它改变的只是我们书写代码的方式

    (2) 编程方式表达更接近于自然语言,调用表达可直译(对命名准确性要求高),注重结果。

5使用举例:

OC中

- (void)getLastestYZToken:(void (^)(BOOL isSuccess))callBlock//参数是闭包block 自己在平时的开发中“不小心”就会使用函数式编程思想
{     callBlock(isSuccess);
 }

参考:

1 http://www.cocoachina.com/ios/20161209/18325.html

2 http://blog.csdn.net/qinyuanpei/article/details/54986613

3 https://www.zhihu.com/question/28292740

iOS 什么是函数式编程的更多相关文章

  1. 李洪强iOS开发之函数式 编程初窥

    函数式 编程初窥   最近在学习Erlang和Python.Erlang是完全的函数式编程语言,Python语言是面向对象的语言,但是它的语法引入了大量的函数式编程思想.越研究越觉得函数式的编程思路可 ...

  2. iOS 开发之函数式编程思想(Functional Programming)

    函数式编程(Functional Programming), 函数式编程强调的函数:1.不依赖外部状态:2.不改变外部状态. 函数式编程可解决线程安全问题,每一个函数都是线程安全的. 时间状态:变量一 ...

  3. 深入浅出-iOS函数式编程的实现 && 响应式编程概念

    简介 本篇主要回顾一下--iOS函数式编程 && 响应式编程概念 ,如何一步步实现函数式编程的过程,对阅读Masonry && SnapKit源码有一定的帮助. 配图 ...

  4. [HMLY]11.iOS函数式编程的实现&&响应式编程概念

    简介 本篇主要回顾一下--iOS函数式编程 && 响应式编程概念 ,如何一步步实现函数式编程的过程,对阅读Masonry && SnapKit源码有一定的帮助. 作为一 ...

  5. iOS-函数式编程 && 响应式编程概念

    作为一个iOS developer,那么你一定用过Masnory / SnapKit: Masonry是一个OC开发中,非常好用的自动布局的第三方框架: SnapKit是Masonry团队打造的swi ...

  6. 理解iOS与函数式编程

    有时候,一个关键字就是一扇通往新世界的大门.两年前,身边开始有人讨论函数式编程,拿关键字Functional Programming一搜,全是新鲜的概念和知识,顺藤摸瓜,看到的技术文章和框架也越来越多 ...

  7. C#函数式编程之序列

    过了许久的时间,终于趁闲暇的时间来继续将函数式编程这个专辑连载下去,这段时间开头是为IOS这个新方向做准备,将OC的教程写成了SWIFT版,当然我个人是支持Xamarin,但是我一般会先掌握原生态的开 ...

  8. (转)现代C++函数式编程

    本文转自:http://geek.csdn.net/news/detail/96636     现代C++函数式编程 C++ 函数式编程 pipeline 开发经验 柯里化 阅读2127    作者简 ...

  9. C#函数式编程-序列

    C#函数式编程之序列 过了许久的时间,终于趁闲暇的时间来继续将函数式编程这个专辑连载下去,这段时间开头是为IOS这个新方向做准备,将OC的教程写成了SWIFT版,当然我个人是支持Xamarin,但是我 ...

随机推荐

  1. hmtl表单

    表单: <form id="" name="" method="post/get" action="负责处理的服务端&quo ...

  2. 几种垃圾回收GC概述

    垃圾回收机制 引用计数回收器(Reference Counting Collector) 原理是在每个对象内部维护一个整数值,叫做这个对象的引用计数,当对象被引用时引用计数加一,当对象不被引用时引用计 ...

  3. poj3254 Corn Fields 利用状态压缩求方案数;

    Corn Fields 2015-11-25 13:42:33 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10658   ...

  4. ftp 下载最近一小时的文件

    #!/bin/bash #cd /home/ftptmp/ ftp -v -n 192.168.0.100 2121 <<EOF user  test  2009 binary cd OU ...

  5. Hbuilder MUI 注册短信验证60秒后重新发送

    <div class="mui-input-row"> <label class="iconfont_log_reg icon-youjian" ...

  6. java -- 路径中包含空格怎么处理

    @.使用toURI()方法 String rootPath = this.getClass().getClassLoader().getResource(".").toURI(). ...

  7. Node Embedding

    1.Kipf, Thomas N., and Max Welling. "Semi-supervised classification with graph convolutional ne ...

  8. 微信小程序 view 布局

    刚看到这个效果的时候还真是和ReactNative的效果一致,属性也基本的一样. view这个组件就是一个视图组件使用起来非常简单. 主要属性: flex-direction: 主要两个特性”row” ...

  9. 使用shell脚本守护node进程

    现在开源的守护node进程的包有不少,比如forever,pm2,这里我就不再赘述了. 但是有的公司生产服务器是不能联网的,而这些包都需要全局安装,必须要网络环境.难道你nohup node app. ...

  10. org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [cn.facekee.cms.entity.CmsFansgroup#195]

    刚开始报错还是报的稀奇古怪的错误,让我纠结了好久,再三检查报错的位置,发现并没有错误,最后认真分析查看每行报错的信息才找到如题所述的错误!!!!! 报这种错误的原因可能是POJO映射文件中的字段和数据 ...