vergil wang


Hi, i'm vergilw, i'm a iOS developer from China, i'm living in Hubei,Wuhan.


iOS Developer

函数式编程

编程范式

编程语言发展到今天,出现了好多不同的代码编写方式,但不同的方式解决的都是同一个问题,那就是如何写出更为通用、更具可重用性的代码或模块。于是有了编程范式的兴起。

范即模范之意,范式即模式、方法,是一类典型的编程风格,是指从事软件工程的一类典型的风格。

函数式编程是最近比较火热的一种编程范式。

函数式编程

对于函数式编程来说,它只关心定义输入数据和输出数据相关的关系,数学表达式里面其实是在做一种映射(mapping),输入的数据和输出的数据关系是什么样的,是用函数来定义的。

函数式编程原则

  1. stateless:函数不维护任何状态。函数式编程的核心精神是 stateless,简而言之就是它不能存在状态,打个比方,你给我数据我处理完扔出来。里面的数据是不变的。

  2. immutable:输入数据是不能动的,动了输入数据就有危险,所以要返回新的数据集。

函数式编程优势

  1. 没有状态就没有伤害。

  2. 并行执行无伤害。

  3. Copy-Paste 重构代码无伤害。

  4. 函数的执行没有顺序上的问题。

  5. 惰性求值

  6. 返回结果的确定性

函数式编程劣势

数据复制比较严重

总结

函数式编程思想:describe what to do, rather than how to do it。

函数式编程是个非常古老的概念,它的核心思想是将运算过程尽量写成一系列嵌套的函数调用,关注的是做什么而不是怎么做,因而被称为声明式编程

正因为如此:函数式编程代码简洁,易于理解,易于做代码重构

最近的文章

ReactNative and Flutter

如今跨平台框架日益完善,在今年经济形势不好的情况下,企业为了缩减开发成本也越来越多的采用移动端跨平台解决方案,了解跨平台解放方案的对企业技术选型尤为重要。网上对于跨平台方案的技术比较文章很多,本文对于跨平台方案的讨论,仅从公司成本和产品层面出发,抛开了纯技术的问题。如下最热门的跨平台技术莫属ReactNative和Flutter,Facebook的ReactNative先于Flutter发布几年,生态较成熟,正如RN官网所介绍的,保证了和原生App一致的交互体验,但用过RN的都知道,正因为...…

继续阅读
更早的文章

ECMAScript 2015

Arrows and Lexical ThisArrows are a function shorthand using the => syntax. They are syntactically similar to the related feature in C#, Java 8 and CoffeeScript. They support both expression and statement bodies. Unlike functions, arrows share ...…

继续阅读