主页 详情

《HEAD FIRST RUBY 中文版》_杰伊·格瑞恩(McGavren Jay)著_14200352_9787519800574

【书名】:《HEAD FIRST RUBY 中文版》
【作者】:杰伊·格瑞恩(McGavren Jay)著
【出版社】:北京:中国电力出版社
【时间】:2017
【页数】:537
【ISBN】:9787519800574
【SS码】:14200352

最新查询

内容简介

1 少说多做

Ruby哲学

交互式使用Ruby

你的第一个Ruby表达式

数学运算和比较

字符串

变量

在对象上调用方法

输入、存储和输出

运行脚本

注释

“puts”和“print”

方法参数

“gets”

字符串内插

用“inspect”和“p”方法检查对象

字符串中的转义序列

在字符串对象上调用“chomp

生成一个随机数

转换为字符串

将字符串转换为数字

条件语句

与“if”对应的是“unless”

循环

你的Ruby工具箱

2 方法与类

定义方法

调用前面定义的方法

方法名

参数

返回值

提前从方法返回

一些乱七八糟的方法

太多的实参

太多的“if”语句

设计一个类

类和对象有什么区别?

你的第一个类

创建新实例(对象)

把庞大的方法分解到类

创建新动物类的实例

更新类图增加实例方法

局部变量只能生存到方法结束

实例变量与实例同生死

封装

属性存取方法

使用存取方法

属性书写器和阅读器

用存取方法确保数据合法

错误——“紧急停止”按钮

在属性书写器方法中使用“raise”

你的Ruby工具箱

3 继承

复制,粘贴……真浪费

继承来救场!

定义超类(毫无特殊之处)

定义子类(相当容易)

为子类增加方法

除了新方法,子类仍保留继承的方法

实例变量属于对象,而不是类!

让我们的动物类一同使用继承

设计动物类层次结构

Animal类与子类的代码

在Animal子类中覆盖一个方法

要得到覆盖的方法!

“super”关键字

super助力的子类

显示Dog的难题

Object类

为什么一切都从Object类继承

覆盖继承的方法

你的Ruby工具箱

4 初始化实例

Chargemore的工资系统

Employee类

创建新Employee实例

Ruby Fixnum类的除法

Ruby Float类的除法

修正Employee中工资取整错误

格式化数字以便打印

格式序列

使用“format”修正我们的工资单

如果忘记设置对象的属性

“nil”代表什么都没有

“/”是一个方法

“initialize”方法

“initialize”的参数

“initialize”与验证

用“self”调用同一实例上的其他方法

通过继承实现按小时计薪的员工

恢复“initialize”方法

继承和“initialize”

“super”和“initialize”

低效的工厂方法

类方法

完整的源代码

你的Ruby工具箱

5 数组与块

数组

访问数组

数组也是对象!

循环处理数组中的元素

重复的循环

消除重复……错误的方式

定义一个接收块的方法

你的第一个块

方法与块之间的控制流

调用相同的方法,使用不同的块

多次调用一个块

块参数

使用“yield”关键字

块格式

“each”方法

用“each”和块消除代码重复

块和变量作用域

完整的计价方法

我们已经消除了重复的循环代码!

能源和设备,块和方法

你的Ruby工具箱

6 块返回值

搜索一个庞大的单词集合

打开文件

安全地关闭文件

用块安全地关闭文件

不要忘记变量作用域!

使用块查找我们想要的数组元素

查找数组元素的麻烦方法:使用“each”

介绍一个更快捷的方法

块有一个返回值

方法如何使用块返回值

综合

深入分析块返回值

用块清除我们不想要的元素

“reject”的返回值

将字符串分解为单词数组

查找数组元素的索引

基于一个数组创建另一个数组(麻烦方法)

使用“map”基于一个数组创建另一个数组

“map”块体中另外的一些逻辑

最后的成果

你的Ruby工具箱

7 散列

统计选票

数组的数组……不太理想

散列

散列是对象

散列默认返回“nil”

nil(而且仅nil)是“假值”

默认返回非“nil”的其他对象

规范化散列键

散列和“each”

关于方法参数

使用散列作为方法参数

Candidate类中的散列参数

省略大括号!

省略箭头!

让整个散列是可选的

散列参数中的录入错误很危险

关键字参数

Candidate类使用关键字参数

必要的关键字参数

你的Ruby工具箱

8 引用

让人困惑的bug

引用

引用出错时

别名

修正天文爱好者的程序

用“inspect”快速识别对象

散列默认对象的问题

我们实际上在修改散列默认对象!

散列默认对象详解

再来看行星和卫星的散列

关于散列默认值的愿望清单

散列默认块

天文爱好者的散列:最终代码

安全地使用散列默认对象

散列默认对象规则#1:不要修改默认对象

散列默认对象规则#2:为散列赋值

使用散列默认对象的经验

你的Ruby工具箱

9 mixin

媒体共享应用

媒体共享应用……使用继承

其中一个类与其他类不(太)像

方案一:让Photo作为Clip的一个子类

方案二:将想要的方法复制到Photo类中

不可用的方案:多重继承

使用模块作为mixin

mixin在后台的工作

为评论创建一个mixin

使用comments mixin

详细分析修改后的“comments”方法

为什么mixin中不能增加“initialize”

mixin和方法覆盖

避免模块中使用“initialize”方法

使用布尔“或”操作符完成赋值

条件赋值操作符

完整代码

你的Ruby工具箱

10 comparable与enumerable

Ruby内置的mixin

comparable mixin概览

牛肉的不同选择

在Steak类上实现一个“大于”方法

常量

还要定义很多方法

comparable mixin

飞船操作符

在Steak中实现飞船操作符

comparable混入Steak

comparable方法如何工作

下一个mixin

enumerable模块

混入enumerable的类

在我们的类中混入enumerable

enumerable模块内部

你的Ruby工具箱

11 文档

Ruby的核心类和模块

文档

HTML文档

列出可用的类和模块

查看实例方法

实例方法文档

调用签名中的参数

调用签名中的块

还要阅读超类和mixin的文档!

查看类方法

类方法文档

不存在的类的文档?

Ruby标准库

查看标准库中类和模块的文档

从哪里得到Ruby文档:rdoc

关于你的类,rdoc能推断出什么信息

利用注释增加你自己的文档

“initialize”实例方法会作为“new”类方法出现

你的Ruby工具箱

12 异常

不要使用方法返回值提供错误消息

使用“raise”报告错误

单独使用“raise”创建新问题

异常:如果出了问题

Rescue子句:修正问题的一个机会

Ruby搜索rescue子句

在我们的SmallOven类中使用rescue子句

需要从问题来源得到问题的描述

异常消息

目前的代码

不同异常有不同的处理逻辑

异常类

为rescue子句指定异常类

一个begin/end块中多个rescue子句

利用定制异常类更新我们烤箱代码

用“retry”在出现错误之后再次尝试

用“retry”更新我们的烤箱代码

无论如何都要做的事情

ensure子句

确保关烤箱

你的Ruby工具箱

13 单元测试

自动测试会在其他人之前先发现你的bug

必须提供自动测试的程序

自动测试类型

MiniTest:Ruby的标准单元测试库

运行测试

测试一个类

详细分析测试代码

红-绿-重构

ListWithCommas的测试

让测试通过

另一个要修正的bug

测试失败消息

验证两个值相等的更好的办法

其他断言方法

删除测试中的重复代码

“setup”方法

“teardown”方法

更新代码来使用“setup”方法

你的Ruby工具箱

14 Web应用

用Ruby编写Web应用

我们的任务清单

工程目录结构

浏览器、请求、服务器和响应

用RubyGems下载和安装库

安装Sinatra gem

一个简单的Sinatra应用

请求类型

资源路径

Sinatra路由

HTML中建立一个电影列表

从Sinatra访问HTML

存放电影数据的类

Sinatra应用中建立一个Movie对象

ERB嵌入标记

HTML中循环处理多个电影名

用HTML表单允许用户增加数据

建立一个HTML表单增加电影

HTML表

用HTML整理表单

你的Ruby工具箱

15 保存与加载数据

保存和获取表单数据

设置HTML表单发送一个POST请求

为POST请求建立一个Sinatra路由

用YAML实现对象和字符串的相互转换

用YAML::Store将对象保存到文件

用YAML::Store将电影保存到文件

查找下一个可用的电影ID

Sinatra应用中使用MovieStore类

测试MovieStore

从MovieStore加载所有电影

Sinatra应用中加载所有电影

建立各个电影的HTML链接

Sinatra路由中的命名参数

使用命名参数得到一个电影的ID

按优先级顺序定义路由

YAML::Store中查找Movie

单个电影的ERB模板

完成处理单个电影的Sinatra路由

你的Ruby工具箱

附录i 其他

#1其他酷库

#2内联if和unless

#3私有方法

#4命令行参数

#5正则表达式

#6单例方法

#7调用任何方法,甚至未定义的方法

#8用Rake自动完成任务

#9Bundler

#10其他图书


书查询(www.shuchaxun.com)本网页唯一编码:
0d38dc5f917a351ce556d986246a9803#e4dc311e49d2663b694b269b07dee94f#71710600#14200352.zip