![]() 作者:Dave Thomas 出版社: 电子工业出版社 原作名: Programming Elixir 译者:杜万/黄明信 出版年: 2016-3 页数: 340 定价: 75.00元 装帧: 平装 ISBN: 9787121282645 内容简介 · · · · · ·在了解 Elixir 前,在网上看到一些评论说, Elixir 其实就是用 Ruby 的语法来编写 Erlang 程序。其实不然。真正玩了 Elixir 之后,就会发现这纯属幻觉。因为 Elixir 相对于 Ruby 使用了截然不同的语言范式——函数式编程。两者在编程思想上相距甚远。如果说它看似 Ruby ,也仅仅是 Elixir 设计者 José Valim ,一个 Ruby 开发者的情怀使然罢了。 Elixir 只是在 Erlang 之上加入的一层语法糖,在不改变 Erlang 开发实践的基础上,还能重用已有的 Erlang 代码。然而这层小小的语法糖却给内心坚若磐石但语法苦涩难懂的 Erlang 增添了一副平易近人的外表。虽然函数式编程并非新鲜事物,而 Elixir 则让函数式编程更现代化。 原著作者就是 15 年前编写了 Programmin... 作者简介 · · · · · ·原著作者就是 15 年前编写了 Programming Ruby ,将 Ruby 带入大众视野的 Dave Thomas 。他延续了一贯的写作风格,以一个拥有面向对象的开发经历但并未接触过函数式编程的开发者的角度切入,循序渐进地带领读者进入 Elixir 的奇妙世界。通过一步步的实验探索,引导读者逐步跳出已有的编程思维模式,以全新的函数式编程方式来思考及寻找解决实际问题的办法。然而本书并不像 Programming Ruby 那样面面俱到,而是通过给读者讲述基本的 Elixir 语法和编程思想,同时提供许多有用的资源,启发读者继续深入探索。这才是学习一门新语言的乐趣所在。 目录 · · · · · ·第 1章 接受现实编程时应该关注数据转换 借助管道来组合转换 函数是数据转换器 安装 Elixir 运行 Elixir · · · · · ·() 第 1章 接受现实 编程时应该关注数据转换 借助管道来组合转换 函数是数据转换器 安装 Elixir 运行 Elixir iex—交互式 Elixir 编译和运行 对阅读本书的建议 练习 换一种方式思考 第一部分 常规编程 第 2章 模式匹配 赋值:并非如你所料 更复杂的匹配 轮到你了 用_(下画线)忽略匹配值 每次匹配变量仅绑定一次 轮到你了 从另一个角度来看等号第 3章 不可变性 你已经拥有了(一些)不可变数据 不可变的数据才是已知的 不可变性对性能的影响 复制数据 垃圾回收用不可变数据编写程序 第 4章 Elixir基础 内置类型 值类型 整数 浮点数 原子 区间 正则表达式 系统类型 PID和端口 引用 收集类型 元组 列表 散列表 二进制型 命名、源文件、约定、运算符和其他 真值 运算符 小结 第 5章 匿名函数 函数和模式匹配 轮到你了 一个函数,多个函数体 编写更长的代码 轮到你了 能返回函数的函数 记住原始环境的函数 参数化函数 轮到你了 将函数作为参数来传递 & 运算符 轮到你了 函数是核心 第 6章 模块与命名函数 编译模块 函数体是代码块 轮到你了 函数调用与模式匹配 轮到你了 哨兵子句 哨兵子句的限制 默认参数 轮到你了 私有函数 |> ——美妙的管道运算符 模块 模块指令 import指令 alias 指令 require 指令 模块属性 模块名:Elixir、Erlang和原子类型 调用 Erlang的库函数 寻找函数库 轮到你了 第 7章 列表与递归 头部和尾部 使用头部和尾部来处理列表 iex如何显示列表 使用头部和尾部来构造列表 创建映射函数 在递归过程中跟踪值 轮到你了 生成求和函数 轮到你了 更复杂的列表模式 列表的列表 轮到你了 List 模块实战 与列表友好相处 第 8章 字典:散列表、散列字典、关键字列表、集合与结构体 如何在散列表、散列字典和关键字列表之间做选择 字典 模式匹配和更新散列表 模式匹配不能绑定键 更新散列表 散列表与结构体 访问结构体的另一种方式 嵌套字典结构 嵌套访问器和非结构体 动态(运行时)嵌套访问器 集合 能力越大,诱惑越大 第9章 番外篇—类型是什么 第 10章 处理收集—Enum与 Stream Enum——处理收集 关于排序的说明 轮到你了 Stream——延迟处理的枚举类型 流是可组合的枚举器 无限流 自定义流 流在实际中的应用 Collectable 协议 推导式 推导式也可以处理二进制位 作用域与推导式 推导式的返回值 轮到你了 感动过往的神 第 11章 字符串与二进制型 字符串字面量 Heredoc 魔术符 “字符串”这个名称 单引号字符串 ——字符编码列表 轮到你了 二进制型 双引号字符串是二进制型 字符串与 Elixir库 轮到你了 二进制型与模式匹配 用二进制型来处理字符串 轮到你了 熟悉却又陌生 第 12章控制流 if 与 unless Cond Case 抛出异常 包含异常的设计 四两拨千斤 轮到你了 第 13章组织项目 项目:从 GitHub获取 issue 我们的代码将如何工作 任务:用 mix来创建我们的新项目 创建项目树 转换:解析命令行 进阶:编写一些基本的测试 轮到你了 转换:从 GitHub获取数据 任务:使用外部库 寻找库 为项目添加库 轮到你了 回到转换 转换:转换响应内容 不在 hex里的依赖项 应用程序配置 转换:为数据排序 转换:取前 n条 轮到你了 转换:格式化表格 任务:创建命令行可执行程序 任务:添加日志 任务:测试代码注释 任务:创建项目文档 使用转换数据的方法来编写代码 轮到你了 第二部分 并发编程 第 14章运用多进程 简单的进程 在进程间发送消息 处理多条消息 递归、循环与栈 进程开销 轮到你了 进程何时结束 关联两个进程 监控进程 轮到你了 并行 map——Erlang版本的“ Hello, World” 轮到你了 斐波那契数服务器 任务调度器 轮到你了 代理——一个难题 以进程的方式来思考 第 15章 节点——分布式服务的关键 命名节点 轮到你了 节点、cookie与安全 给你的进程命名 何时给进程命名 轮到你了 I/O、PID与节点 轮到你了 节点是分布式的基础 第 16章OTP:服务器 一些 OTP的定义 OTP 服务器 状态和单个服务器 我们的第一个 OTP服务器 轮到你了 单向调用 跟踪服务器的执行情况 轮到你了 GenServer回调函数 给进程命名 整理接口 轮到你了 第 17章 OTP:应用程序监视器 应用程序监视器与工作进程 轮到你了 管理重启前后的进程状态 应用程序监视器是可靠性的核心 轮到你了 第 18章OTP:应用程序 这不是传统的应用程序 应用程序规范文件 将 Sequence程序转变为 OTP应用程序 关于应用参数的更多信息 监视是可靠性的基础 轮到你了 热代码交换 OTP很大——难以置信的大 轮到你了 第 19章任务与代理 任务 任务与监视 代理 更大的例子 使其分布式运行 使用代理与任务,还是 GenServer 第三部分 更高级的 Elixir 第 20章宏与代码求值 实现 if语句 宏注入代码 装载次序 quote函数 将内部表示作为代码使用 unquote函数 展开列表——unquote_splicing 回到我们的 myif宏 轮到你了 使用绑定来注入值 宏是卫生的 执行代码片段的其他方法 宏与运算符 深入研究 更进一步 轮到你了 第 21章 连接多个模块:行为与 use 行为 定义行为 声明行为 use 与 __using__ 放到一起——跟踪方法调用 使用 use 轮到你了 第22章协议 ——多态函数 定义协议 实现协议 可用的类型 轮到你了 协议和结构体 内置协议: Access 内置协议: Enumerable 内置协议: StringChars 内置协议: Inspect 协议就是多态 轮到你了 第 23章更酷的玩意儿 自定义魔术符 获取选项 轮到你了 多应用的 umbrella项目 创建 umbrella项目 创建子项目 LineSigil项目 Evaluator项目 连接子项目 别急!还有更多炫酷的玩意儿! 附录 A异常:raise与 try,catch与 throw 附录 B类型规范与类型检查 · · · · · · () |
近乎平淡的笔触
语言详实
回转曲折,坎坷不平
文字表现力极强