函数式Swift4-最新版

所需积分/C币:41 2017-12-27 23:18:29 5.73MB PDF

最新版函数式swift编程,RMB买的,分享给需要学习的兄弟
1引言 译序8 2函数式思想 12 案例: Battleship12 等函数18 类型驱动开发22 注解22 3案例研究:封装 Core Image 25 滤镜类型25 理论背景:柯里化30 讨论32 4Map、 Filter和 Reduce 34 泛型介绍34 Filter 38 Reduce 39 实际运用43 泛型和Any类型44 注释46 5可选值 48 案例研究:字典48 玩转可选值51 为什么使用可选值?57 6案例研究: Quick Check 构建 QuickCheck62 缩小范围65 展望71 不可变性的价值 74 变量和引用74 值类型与引用类型75 讨论79 8枚举 83 关于枚举83 关联值85 添加泛型87 Swift中的错误处理88 再聊聊可选值89 数据类型中的代数学90 为什么使用枚举?92 9纯函数式数据结构 94 叉搜索树94 基于字典树的自动补全101 讨论108 10案例研究:图表 110 绘制正方形和圆110 核心数据结构113 讨论123 11迭代器和序列 126 迭代器126 序列132 案例研究:遍历二叉树136 案例研究:优化 QuickCheck的范围收缩136 12案例研究:解析器组合算子 140 解析器的类型140 组合解析器143 解析算术表达式153 更 Swift化的解析器类型15 13案例研究:构建一个表格应用 158 解析158 求值164 用户界面169 14函子、适用函子与单子 172 函子172 适用函子174 单子177 讨论179 15尾声 182 拓展阅读182 结语183 引言 为什么写这本书?关于Swit,已经有大量来自 Apple的现成文档,而且还有更多的书正在编 写中。为什么世界上依然需要关于这种编程语言的另一本书呢? 这本书尝试让你学会以函数式的方式进行思考。我们认为Swft有着合适的语言特性来适配函 数式的编程方法。然而是什么使得程序具有函数式特性?又为何要一开始就学习关于函数式的 内容呢? 很难给出函数式的准确定乂一其实同样地,我们也很难给出面向对象编程,亦或是其它编程范 式的准确定乂。因此,我们会尽量把重点放在我们认为设计良好的Swft函数式程序应该具有 的一些特质上 →模块化:相较于把程序认为是一系列赋值和方法调用,函数式开发者更倾向于强调每个 程序都能够被反复分解为越来越小的模块单元,而所有这些块可以通过函数裝配起来, 以定义一个完整的程序。当然,只有当我们能够避免在两个独立组件之间共享状态时 才能将一个大型程序分解为更小的单元。这引出我们的下一个关注特质。 →对可变状态的谨慎处理:函数式编程有时候(被半开玩笑地)称为“面向值编程”。面向 对象编程专注于类和对象的设计,每个类和对象都有它们自己的封装状态。然而,函数 式编程强调基于值编程的重要性,这能使我们免受可变状态或其他一些副作用的困扰。 通过避免可变状态,函数式程序比其对应的命令式或者面向对象的程序更容易组合。 →类型:最后,一个设计良好的函数式程序在使用类型时应该相当谨慎。精心选择你的数 据和函数的类型,将会有助于构建你的代码,这比其他东西都重要。 Swift有一个强大 的类型系统,使用得当的话,它能够让你的代码更加安全和健壮。 我们认为这些特质是 Swift程序员可能从函数式编程社区学习到的精华点。在这本书中,我们 将通过许多实例和学习案例说明以上几点。 根据我们的经验,学习用函数式的方式思考并不容易。它挑战了我们既有的熟练解决问题的方 式。对于习惯写for循环的程序员来说,递归可能让我们倍感迷惑;赋值语句和全局状态的缺 失让我们寸步难行;更不用提闭包,泛型,高阶函数和单子 Monad),这些东西简直让人痛不 欲生。 在这本书中,我们假定你以前有过 Objective-C(或其他一些面向对象的语言)的编程经验。书 中不会涵盖Swit的基础知识,或是教你创建你的第一个 Xcode工程,但我们会尝试在适当的 时候引用现有的 Apple文档。你应当能自如地阅读Swit程序,并且熟悉常见的编程概念,如 类,方法和变量等。如果你刚刚开始学习编程,这本书可能并不适合你。 在这本书中,我们希望让函数式编程易于理解,并消除人们对它的一些偏见。使用这些理念去 改善你的代码并不需要你拥有数学的博士学位!函数式编程并不是Swif编程的唯一方式。但 是我们相信学习函数式编程会为你的工具箱添加一件重要的新工具,不论你使用那种语言,这 件工具都会让你成为一个更好的开发者。 书籍更新 随着Swft的发展,我们会继续更新和改进这本书。如果你遇到任何错误,或者是想给我们其 它类型的反馈,请在我们的 Github仓库中创建一个 Issue 致谢 我们想要感谢众多帮助我们塑造了这本书的人。在此我们想要特别提及其中几位 Nataψ ye Childress是我们的出版编辑。她给了我们很多宝贵的反馈意见,不仅保证了语言的正 确性和一致性,而且确保了本书清晰易懂。 Sarah lincoln设计了本书的封面和布局。 Wouter想要感谢乌得勒支大学允许他能够在这本书上投入时间进行编写。 我们还想要感谢测试版的读者们在本书写作过程中给予我们反馈(按字母顺序排列) Adrian Kosmaczewski, Alexander Altman, Andrew Halls, Bang Jun-young, Daniel eggert, Daniel Steinberg, David Hart, David Owens ll, Eugene Dorfman, f-dz-V, Henry Stamerjohann, J Bucaran, Jamie Forrest, Jaromir Siska, Jason Larsen, Jesse Armand John Gallagher, Kaan Dedeoglu, Kare Morstol, Kiel Gillard, Kristopher Johnson, Matteo Piombo, Nicholas Outram, Ole Begemann, Rob Napier, Ronald Mannak, Sam Isaacson, Ssu Jen Lu, stephen horne tu, terry Lewis, Tim Brooks, vadim Shpakovski Chris. Florian and wouter 译序 随着程序语言的发展,我们作为软件开发人员,所熟知和使用的工具也在不断进化。以Java和 C++为代表的面向对象编程的编程方式在上世纪企业级的软件开发中大放异彩,然而随着软件 行业不断发展,开发者们发现了面向对象范式的诸多不足。面向对象强调的是将与某数据类型 相关的一系列操作都封装到该数据类型中去,因此,在数据类型中难免存在大量状态,以及相 关的行为。虽然这很符合人类的逻辑直觉,但是当类型关系变得错综复杂的时候,类型中状态 的改变和类型之间彼此的继承和依赖将使程序的复杂度几何上升。 避免使用程序状态和可变对象,是降低程序复杂度的有效方式之一,而这也正是函数式编程的 精髓。函数式编程强调执行的结果,而非执行的过程。我们先构建一系列简单却具有一定功能 的小函数,然后再将这些函数进行组装以实现完整的逻辑和复杂的运算,这是函数式编程的基 本思想。 正如上面引言所述,Swit是一门有着合适的语言特性来适配函数式编程方法的优秀语言。这个 世界上最纯粹的函数式编程语言非 Haskel莫属,但是由于我国程序开发的起步和热门相对西 方世界要晚一些,使用 Haskell!的开发者可谓寥寥无几,因此 Haskell在国内的影响力也十分 有限。对于国内的不少开发者,特别是ios/0sⅩ的开发者来说, Swift可能是我们第一次真正 有机会去接触和使用的一门函数式特性语言。相比于很多已有的函数式编程语言, Swift在语法 上更加优雅灵活,语言本身也遵循了函数式的设计模式。作为函数式编程的入门语言,可以说 swit是非常理想的选择。而本书正是一本引领你进入Swif函数式编程世界的优秀读物,让更 多的中国开发者有机会接触并了解 Swift语言函数式的一面,正是我们翻译本书的目的所在。 本书大致上可以分为两个部分。首先,在第二章至第十章中,我们会介绍 Swift函数式编程特 性的一些基本概念,包括高阶函数的使用方法,不可变量的必要性,可选值的存在价值,枚举 在函数式编程中的意乂,以及纯函数式数据结构的优势等内容。这些都是函数式编程中的基本 概念,也构成了Swif函数式特性甚至是这门语言的基础。当然,在这些概念讲解中我们也穿 插了不少硏究案例,以帮助读者真正理解这些基本概念,并对在何时使用它们以及使用它们为 程序设计带来的改善形成直观印象。第二部分从第十一章开始,相比于前面的章节,这部分属 于本书的进阶內容。我们将从构建最基本的生成器和序列开始,利用解析器组合算子构建一个 解析器库,并最终实现一个相对复杂的公式解析器和函数式的表格应用。这部分内容环环相扣, 因为内容抽象度较高,所以理解起来也可能比较困难。如果你在阅读最后表格应用章节时遇到 麻烦的话,我们强烈建议你下载对应的完整源码进行硏究,并且折回头去再次阅读第二部分的 相关章节。随着你对各个函数式算子的深入理解,函数式编程的概念和思想将自然而然进入你 的血液,这将丰富你的知识体系,并会对之后的开发工作大有裨益。 本书原版的三位作者都是富有经验的函数式编程方法的使用者或教师,他们将自己对于函数式 编程的理解和 Swift中的相关特性进行了对应和总结,并将这些联系揭示了出来。而中文版的 三位译者花費了大量时间和精力,试图将这些规律以更易于理解的组织方式和语言,带给国內 的开发者们。不过不论是原作者还是译者,其实和各位读者一样,都只不过是普通开发者中的 员,所以本书岀现谬漏可能在所难免。如果您在阅读时发现了问题,可以给我们发邮件,或 是在本书 Issue页面提出,我们将及时研究并加以改进。 事不宜迟,现在就让我们开始在函数式的世界中遨游一番吧。 陈聿菡,杜欣,王巍

...展开详情
试读 127P  函数式Swift4-最新版

评论 下载该资源后可以进行评论 10

语过添情 很好的资源,真实。谢谢分享
2019-10-17
回复
yqh2648 赞,中文第四版,非常好
2019-05-17
回复
weixin_38669689 很不错,谢谢
2019-04-20
回复
走迷踪步的猫 真的可以,好样的
2018-09-03
回复
Oneperson_L 资源不错,和好的
2018-07-06
回复
0o怀可o0 感谢分享,可以看
2018-06-08
回复
女盲 谢谢啦,开心!!!!
2018-03-09
回复
styx1000 不错 functional swift
2018-01-29
回复
causal360 资源可靠,????
2018-01-22
回复
wan_g_bin 资源可靠,
2018-01-05
回复
img
Black Magic

关注 私信 TA的资源

上传资源赚积分,得勋章
    最新推荐
     函数式Swift4-最新版 41积分/C币 立即下载
    1/127
     函数式Swift4-最新版第1页
     函数式Swift4-最新版第2页
     函数式Swift4-最新版第3页
     函数式Swift4-最新版第4页
     函数式Swift4-最新版第5页
     函数式Swift4-最新版第6页
     函数式Swift4-最新版第7页
     函数式Swift4-最新版第8页
     函数式Swift4-最新版第9页
     函数式Swift4-最新版第10页
     函数式Swift4-最新版第11页
     函数式Swift4-最新版第12页
     函数式Swift4-最新版第13页
     函数式Swift4-最新版第14页
     函数式Swift4-最新版第15页
     函数式Swift4-最新版第16页
     函数式Swift4-最新版第17页
     函数式Swift4-最新版第18页
     函数式Swift4-最新版第19页
     函数式Swift4-最新版第20页

    试读已结束,剩余107页未读...

    41积分/C币 立即下载 >