登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入 新註冊 | 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / EMS,時效:出貨後2-3日

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

2023年09月出版新書

2023年08月出版新書

2023年07月出版新書

2023年06月出版新書

2023年05月出版新書

2023年04月出版新書

2023年03月出版新書

2023年02月出版新書

『簡體書』函数式Swift

書城自編碼: 2886033
分類: 簡體書→大陸圖書→計算機/網絡程序設計
作者: Chris Eidhof[克里斯·安道夫]
國際書號(ISBN): 9787121293573
出版社: 电子工业出版社
出版日期: 2016-08-01
版次: 1 印次: 1
頁數/字數: 192/
書度/開本: 16开 釘裝: 平塑

售價:NT$ 488

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
绘画的基础 彩色铅笔技法入门教程
《 绘画的基础 彩色铅笔技法入门教程 》

售價:NT$ 279.0
听闻远方有你2
《 听闻远方有你2 》

售價:NT$ 240.0
牛津分配正义手册
《 牛津分配正义手册 》

售價:NT$ 2016.0
全域增长:从战略制定到战术执行
《 全域增长:从战略制定到战术执行 》

售價:NT$ 661.0
澎湖湾的荷兰船:十七世纪荷兰人怎么来到台湾
《 澎湖湾的荷兰船:十七世纪荷兰人怎么来到台湾 》

售價:NT$ 370.0
银元时代生活史
《 银元时代生活史 》

售價:NT$ 493.0
大唐兴衰三百年3:从女主当国到开元盛世
《 大唐兴衰三百年3:从女主当国到开元盛世 》

售價:NT$ 325.0
直击核心:通向卓越教练之路的革命性方法
《 直击核心:通向卓越教练之路的革命性方法 》

售價:NT$ 549.0

建議一齊購買:

+

NT$ 668
《 人类通史 》
+

NT$ 668
《 精通Swift设计模式 》
+

NT$ 810
《 自行车骑行大百科 》
+

NT$ 639
《 Shh! We Have a Plan嘘!我们有个计划 (卡板书)ISBN9780763679774 》
+

NT$ 1260
《 野生星球:全球自然摄影大赛获奖作品精选(精装版)(全彩) 》
+

NT$ 573
《 Swifter(第2版):100个Swift 2 开发必备Tip 》
編輯推薦:
函数式编程已呈席卷之势,赶紧开始学习一门函数式编程语言吧!
Swift 有作为一门函数式语言的先天优势,iOS 开发也可以函数式!
objc 是全球知名 iOS 教学网站,其精品图书更是惠及无数开发者!
Swifter 一书作者喵神王巍组织翻译objc系列精品图书将相继问世!
內容簡介:
Swift 是一门有着合适的语言特性来适配函数式编程方法的优秀语言,对于国内的不少开发者来说,Swift 可能是我们第一次真正有机会去接触和使用的一门函数式特性语言。Swift 在语法上更加优雅灵活,语言本身也遵循了函数式的设计模式。本书是一本引领你进入 Swift 函数式编程世界的优秀读物,它让更多的中国开发者有机会接触并了解 Swift 语言函数式的一面,是广大程序开发者不可多得的工具书。
關於作者:
王巍 onevcat ,《Swifter(第2版):100个Swift 2 开发必备Tip》作者,来自中国的一线 iOS 开发者,毕业于清华大学。在校期间就开始进行 iOS 开发,拥有丰富的 Cocoa 和 Objective-C 开发经验,另外他也活跃于使用 C# 的 Unity3D 游戏开发界。曾经开发了《小熊推金币》,《Pomo Do》等一系列优秀的 iOS 游戏和应用。在业余时间,王巍会在 OneV''s Den 撰写博客,分享他在开发中的一些心得和体会。另外,王巍还是翻译项目 objc 中国的组织者和管理者,为中国的 Objective-C 社区的发展做出了贡献。同时,他也很喜欢为开源社区贡献代码,是著名的 Xcode 插件 VVDocumenter 的作者。现在王巍旅居日本,并就职于即时通讯软件公司 Line,从事 iOS 开发工作,致力于为全世界带来更好体验和功能的应用。
目錄
目录
I 函数式Swift基础 1
第1章 函数式思想 2
1.1 案例:Battleship 2
1.2 一等函数 7
1.3 类型驱动开发 11
1.4 注解 11
第2章 案例研究:封装Core Image 12
2.1 滤镜类型 12
2.2 构建滤镜 13
模糊 13
颜色叠层 13
2.3 组合滤镜 15
复合函数 16
2.4 理论背景:柯里化 17
2.5 讨论 18
第3章 Map、Filter和Reduce 20
3.1 泛型介绍 20
顶层函数和扩展 24
3.2 Filter 24
3.3 Reduce 26
3.4 实际运用 29
3.5 泛型和Any类型 31
3.6 注释 32
第4章 可选值 34
4.1 案例研究:字典 34
4.2 玩转可选值 37
可选值链 37
分支上的可选值 39
可选映射 40
再谈可选绑定 41
4.3 为什么使用可选值 43
第5章 案例研究:QuickCheck 47
5.1 构建QuickCheck 49
生成随机数 49
实现check函数 51
5.2 缩小范围 53
反复缩小范围 54
5.3 随机数组 55
5.4 使用QuickCheck 58
5.5 展望 59
第6章 不可变性的价值 60
6.1 变量和引用 60
6.2 值类型与引用类型 61
结构体与类:究竟是否可变 63
Objective-C 64
6.3 讨论 65
第7章 枚举 68
7.1 关于枚举 68
7.2 关联值 71
7.3 添加泛型 72
7.4 Swi中的错误处理 74
7.5 再聊聊可选值 75
7.6 数据类型中的代数学 76
7.7 为什么使用枚举 78
第8章 纯函数式数据结构 79
8.1 二叉搜索树 79
8.2 基于字典树的自动补全 85
字符串字典树 91
8.3 讨论 93
第9章 案例研究:图表 94
9.1 绘制正方形和圆形 94
9.2 核心数据结构 97
9.3 计算与绘制 99
9.4 创建视图与PDF 105
9.5 额外的组合算子 106
9.6 讨论 107
II 函数式Swift进阶 109
第10章 生成器和序列 110
10.1 生成器 110
10.2 序列 115
10.3 案例研究:遍历二叉树 118
10.4 案例研究:优化QuickCheck的范围收缩 119
10.5 不止是Map与Filter 123
第11章 案例研究:解析器组合算子 127
11.1 核心部分 127
11.2 选择 131
11.3 顺序解析 131
改进 133
11.4 便利组合算子 138
11.5 一个简单的计算器 143
第12章 案例研究:构建一个表格应用 148
12.1 示例代码 148
12.2 解析器 149
符号化 149
解析 153
12.3 求值器 158
12.4 GUI 163
数据源 163
代理 165
窗口控制器 165
第13章 函子、适用函子与单子 167
13.1 函子 167
13.2 适用函子 169
13.3 单子 172
13.4 讨论 174
第14章 尾声 176
14.1 拓展阅读 177
14.2 结语 178
参考文献 179
內容試閱
译序
随着程序语言的发展,软件开发人员所熟知和使用的工具也在不断进化。以Java和C为代表的面向对象编程的编程方式在20世纪企业级的软件开发中大放异彩,然而随着软件行业的不断发展,开发者们发现了面向对象范式的诸多不足。面向对象强调的是将与某数据类型相关的一系列操作都封装到该数据类型中去,因此,在数据类型中难免存在大量状态,以及相关的行为。虽然这很符合人类的逻辑直觉,但是当类型关系变得错综复杂时,类型中状态的改变和类型之间彼此的继承和依赖将使程序的复杂度呈几何级数上升。
避免使用程序状态和可变对象,是降低程序复杂度的有效方式之一,而这也正是函数式编程的精髓。函数式编程强调执行的结果,而非执行的过程。我们先构建一系列简单却具有一定功能的小函数,然后再将这些函数进行组装以实现完整的逻辑和复杂的运算,这是函数式编程的基本思想。
正如上面引言所述,Swift 是一门有着合适的语言特性来适配函数式编程方法的优秀语言。这个世界上最纯粹的函数式编程语言非Haskell莫属,但是由于我国程序开发的起步和走热相对西方世界要晚一些,使用Haskell的开发者可谓寥寥无几,因此Haskell在国内的影响力也十分有限。对国内的不少开发者,特别是iOS OS X的开发者来说,Swift可能是我们第一次真正有机会去接触和使用的一门函数式特性语言。相比于很多已有的函数式编程语言,Swift在语法上更加优雅灵活,语言本身也遵循了函数式的设计模式。作为函数式编程的入门语言,可以说Swift是非常理想的选择。而本书正是一本引领你进入Swift函数式编程世界的优秀读物,让更多的中国开发者有机会接触并了解Swift语言函数式的一面,正是我们翻译本书的目的所在。
本书大致上可以分为两个部分。首先,在第1章至第9章中,我们会介绍Swift函数式编程特性的一些基本概念,包括高阶函数的使用方法、不可变量的必要性、可选值的存在价值、枚举在函数式编程中的意义,以及纯函数式数据结构的优势等内容。这些都是函数式编程中的基本概念,也构成了Swift函数式特性甚至是这门语言的基础。当然,在这些概念讲解中我们也穿插了不少研究案例,以帮助读者真正理解这些基本概念,并对在何时使用它们以及使用它们为程序设计带来的改善形成直观印象。第二部分从第10章开始,相比于前面的章节,这部分属于本书的进阶内容。我们将从构建最基本的生成器和序列开始,利用解析器组合算子构建一个解析器库,并最终实现一个相对复杂的公式解析器和函数式的表格应用。这部分内容环环相扣,因为内容抽象度较高,所以理解起来也可能比较困难。如果你在阅读第12章时遇到麻烦,则强烈建议你下载对应的完整源码进行研究,并且折回头去再次阅读第二部分的相关章。随着你对各个函数式算子的深入理解,函数式编程的概念和思想将自然而然进入你的血液,这将丰富你的知识体系,并会对之后的开发工作大有裨益。
本书原版的三位作者都是富有经验的函数式编程方法的使用者或教师,他们将自己对于函数式编程的理解和Swift中的相关特性进行了对应和总结,并将这些联系揭示了出来。而中文版的三位译者花费了大量时间和精力,试图将这些规律以更易于理解的组织方式和语言,带给国内的开发者们。不过不论是原作者还是译者,其实和各位读者一样,都只不过是普通开发者中的一员,所以本书出现谬漏可能在所难免。如果您在阅读时发现了问题,可以给我们发邮件,或是在本书issue页面提出,我们将及时研究并加以改进。
事不宜迟,现在就让我们开始在函数式的世界中遨游一番吧!
陈聿菡 杜欣 王巍
前言
为什么写这本书?关于Swift,已经有大量来自苹果的现成文档,而且还有更多的书正在编写中。为什么世界上依然需要关于这种编程语言的另一本书呢?
这本书尝试让你学会以函数式的方式进行思考。我们认为Swift有着合适的语言特性来适配函数式的编程方法。然而是什么使得程序具有函数式特性?又为何要一开始就学习关于函数式的内容呢?
很难给出函数式的准确定义同样地,我们也很难给出面向对象编程,抑或是其他编程范式的准确定义。因此,我们会尽量把重点放在我们认为设计良好的Swift函数式程序应该具有的一些特质上:
? 模块化:相比于把程序认为是一系列赋值和方法调用,函数式开发者更倾向于强调每个程序都能够被反复分解为越来越小的模块单元,而所有这些块可以通过函数装配起来,以定义一个完整的程序。当然,只有当我们能够避免在两个独立组件之间共享状态时,才能将一个大型程序分解为更小的单元。这引出我们的下一个关注特质。
? 对可变状态的谨慎处理:函数式编程有时候被半开玩笑地称为面向值编程。面向对象编程专注于类和对象的设计,每个类和对象都有自己的封装状态。然而,函数式编程强调基于值编程的重要性,这能使我们免受可变状态或其他一些副作用的困扰。通过避免可变状态,函数式程序比其对应的命令式或者面向对象的程序更容易组合。
? 类型:最后,一个设计良好的函数式程序在使用类型时应该相当谨慎。精心选择你的数据和函数的类型,将会有助于构建你的代码,这比其他东西都重要。Swift有一个强大的类型系统,使用得当的话,则它能够让你的代码更加安全和健壮。
我们认为这些特质是Swift程序员可能从函数式编程社区学习到的精华点。在这本书中,我们会通过许多实例和学习案例说明以上几点。
根据我们的经验,学习用函数式的方式思考并不容易。它挑战了我们既有的熟练解决问题的方式。对习惯写for循环的程序员来说,递归可能让我们倍感迷惑;赋值语句和全局状
态的缺失让我们寸步难行;更不用提闭包、泛型、高阶函数和单子Monad,这些东西简直
让人痛不欲生。
在这本书中,我们假定你以前有过 Objective-C 或其他一些面向对象的语言 的编程经验。书中不会涵盖Swift的基础知识,或者教你建立你的第一个Xcode工程,不过我们会尝试在
适当的时候引用现有的Apple文档。你应当能自如地阅读Swift程序,并且熟悉常见的编程
概念,如类、方法和变量等。如果你只是刚刚开始学习编程,则这本书可能并不适合你。
在这本书中,我们希望让函数式编程易于理解,并消除人们对它的一些偏见。使用这些理念去改善你的代码并不需要你拥有数学的博士学位!函数式编程并不是Swift编程的唯一方式。但是我们相信学习函数式编程会为你的工具箱添加一件重要的新工具,不论你使用那种语言,这件工具都会让你成为一个更好的开发者。
示例代码
你可以在我们的 GitHub 仓库中找到本书里所有的示例代码。这个仓库包括一些章节的playgrounds,以及其他章节的Swift文件和OS X工程。
书籍更新
随着Swift的发展,我们会继续更新和改进这本书。如果你遇到任何错误,或者是想给我们其他类型的反馈,请在我们的GitHub仓库中创建一个issue。
致谢
我们想要感谢众多帮助我们塑造了这本书的人。在此我们想要特别提及其中几位:
Natalye Childress是我们的出版编辑。她给了我们很多宝贵的反馈意见,不仅保证了语言的正确性和一致性,而且确保了本书清晰易懂。
Sarah Lincoln设计了本书的封面和布局。
Wouter想要感谢乌得勒支大学允许他能够在这本书上投入时间进行编写。
我们想要感谢测试版读者在本书的写作过程中给我们的反馈按字母顺序排列:
Adrian Kosmaczewski, Alexander Altman, Andrew Halls, Bang Jun-young, Daniel Eggert, Daniel
Steinberg, David Hart, David Owens II, 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, TJ, Terry Lewis, Tim Brooks,
Vadim Shpakovski.
Chris
Florian
Wouter

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 海外用户
megBook.com.tw
Copyright (C) 2013 - 2024 (香港)大書城有限公司 All Rights Reserved.