当前位置:首页 > 工业技术
HEAD FIRST RUBY  中文版
HEAD FIRST RUBY  中文版

HEAD FIRST RUBY 中文版PDF电子书下载

工业技术

  • 电子书积分:16 积分如何计算积分?
  • 作 者:杰伊·格瑞恩(McGavren Jay)著
  • 出 版 社:北京:中国电力出版社
  • 出版年份:2017
  • ISBN:9787519800574
  • 页数:537 页
图书介绍:Ruby语言为什么这么炙手可热?它适合你吗?嗯,你可以先问问自己:是不是已经厌倦了其他语言中那些额外的声明、关键字和编译步骤?你想成为一个效率更高的程序员吗?那么你会爱上Ruby的!通过这个绝妙的实战学习体验,你会发现Ruby会为你解决所有这些细节,而你可以尽享编程的快乐,用更少的代码做更多的事情。本书主要内容有:少说多做:编写你想要的代码;方法与类:合理组织;继承:依靠你的双亲;初始化实例:从头开始;数组与块:比循环还要好;块返回值:我该如何处理?散列:为数据加标签;引用:混乱的信号;Mixin:混合;Comparable与enumerable:现成的混入模块;文档:阅读手册;异常:处理异常事件;单元测试:代码质量保证;Web应用:提供HTML;保存与加载数据:保留下来。
《HEAD FIRST RUBY 中文版》目录
标签:中文版

1 少说多做 2

Ruby哲学 2

交互式使用Ruby 5

你的第一个Ruby表达式 6

数学运算和比较 6

字符串 6

变量 7

在对象上调用方法 8

输入、存储和输出 12

运行脚本 13

注释 14

“puts”和“print” 14

方法参数 15

“gets” 15

字符串内插 16

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

字符串中的转义序列 19

在字符串对象上调用“chomp 20

生成一个随机数 22

转换为字符串 23

将字符串转换为数字 25

条件语句 26

与“if”对应的是“unless” 29

循环 30

你的Ruby工具箱 34

2 方法与类 36

定义方法 36

调用前面定义的方法 37

方法名 38

参数 38

返回值 42

提前从方法返回 43

一些乱七八糟的方法 44

太多的实参 45

太多的“if”语句 45

设计一个类 46

类和对象有什么区别? 47

你的第一个类 48

创建新实例(对象) 48

把庞大的方法分解到类 49

创建新动物类的实例 50

更新类图增加实例方法 51

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

实例变量与实例同生死 56

封装 58

属性存取方法 59

使用存取方法 61

属性书写器和阅读器 62

用存取方法确保数据合法 69

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

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

你的Ruby工具箱 73

3 继承 76

复制,粘贴……真浪费 76

继承来救场! 78

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

定义子类(相当容易) 81

为子类增加方法 82

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

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

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

设计动物类层次结构 92

Animal类与子类的代码 93

在Animal子类中覆盖一个方法 94

要得到覆盖的方法! 95

“super”关键字 96

super助力的子类 98

显示Dog的难题 101

Object类 102

为什么一切都从Object类继承 103

覆盖继承的方法 104

你的Ruby工具箱 105

4 初始化实例 108

Chargemore的工资系统 108

Employee类 109

创建新Employee实例 110

Ruby Fixnum类的除法 112

Ruby Float类的除法 113

修正Employee中工资取整错误 114

格式化数字以便打印 115

格式序列 116

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

如果忘记设置对象的属性 120

“nil”代表什么都没有 121

“/”是一个方法 122

“initialize”方法 123

“initialize”的参数 125

“initialize”与验证 130

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

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

恢复“initialize”方法 140

继承和“initialize” 141

“super”和“initialize” 142

低效的工厂方法 148

类方法 149

完整的源代码 152

你的Ruby工具箱 154

5 数组与块 156

数组 156

访问数组 157

数组也是对象! 158

循环处理数组中的元素 161

重复的循环 162

消除重复……错误的方式 165

块 167

定义一个接收块的方法 168

你的第一个块 169

方法与块之间的控制流 170

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

多次调用一个块 172

块参数 173

使用“yield”关键字 174

块格式 175

“each”方法 179

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

块和变量作用域 184

完整的计价方法 188

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

能源和设备,块和方法 191

你的Ruby工具箱 192

6 块返回值 194

搜索一个庞大的单词集合 194

打开文件 196

安全地关闭文件 196

用块安全地关闭文件 197

不要忘记变量作用域! 198

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

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

介绍一个更快捷的方法 203

块有一个返回值 204

方法如何使用块返回值 209

综合 210

深入分析块返回值 211

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

“reject”的返回值 213

将字符串分解为单词数组 214

查找数组元素的索引 215

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

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

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

最后的成果 220

你的Ruby工具箱 223

7 散列 226

统计选票 226

数组的数组……不太理想 227

散列 228

散列是对象 230

散列默认返回“nil” 233

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

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

规范化散列键 238

散列和“each” 240

关于方法参数 242

使用散列作为方法参数 243

Candidate类中的散列参数 244

省略大括号! 245

省略箭头! 245

让整个散列是可选的 246

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

关键字参数 249

Candidate类使用关键字参数 250

必要的关键字参数 251

你的Ruby工具箱 255

8 引用 258

让人困惑的bug 258

堆 259

引用 260

引用出错时 261

别名 262

修正天文爱好者的程序 264

用“inspect”快速识别对象 266

散列默认对象的问题 267

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

散列默认对象详解 270

再来看行星和卫星的散列 271

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

散列默认块 273

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

安全地使用散列默认对象 280

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

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

使用散列默认对象的经验 283

你的Ruby工具箱 284

9 mixin 286

媒体共享应用 286

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

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

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

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

不可用的方案:多重继承 290

使用模块作为mixin 291

mixin在后台的工作 293

为评论创建一个mixin 297

使用comments mixin 298

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

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

mixin和方法覆盖 302

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

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

条件赋值操作符 306

完整代码 309

你的Ruby工具箱 310

10 comparable与enumerable 312

Ruby内置的mixin 312

comparable mixin概览 313

牛肉的不同选择 314

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

常量 316

还要定义很多方法 317

comparable mixin 318

飞船操作符 319

在Steak中实现飞船操作符 320

comparable混入Steak 321

comparable方法如何工作 322

下一个mixin 325

enumerable模块 326

混入enumerable的类 327

在我们的类中混入enumerable 328

enumerable模块内部 329

你的Ruby工具箱 332

11 文档 335

Ruby的核心类和模块 335

文档 335

HTML文档 336

列出可用的类和模块 337

查看实例方法 338

实例方法文档 340

调用签名中的参数 341

调用签名中的块 342

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

查看类方法 346

类方法文档 348

不存在的类的文档? 349

Ruby标准库 350

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

从哪里得到Ruby文档:rdoc 353

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

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

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

你的Ruby工具箱 358

12 异常 360

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

使用“raise”报告错误 362

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

异常:如果出了问题 364

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

Ruby搜索rescue子句 366

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

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

异常消息 370

目前的代码 373

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

异常类 377

为rescue子句指定异常类 379

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

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

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

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

无论如何都要做的事情 385

ensure子句 386

确保关烤箱 387

你的Ruby工具箱 388

13 单元测试 390

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

必须提供自动测试的程序 391

自动测试类型 393

MiniTest:Ruby的标准单元测试库 394

运行测试 395

测试一个类 396

详细分析测试代码 398

红-绿-重构 400

ListWithCommas的测试 401

让测试通过 404

另一个要修正的bug 406

测试失败消息 407

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

其他断言方法 410

删除测试中的重复代码 413

“setup”方法 414

“teardown”方法 415

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

你的Ruby工具箱 419

14 Web应用 422

用Ruby编写Web应用 422

我们的任务清单 423

工程目录结构 424

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

用RubyGems下载和安装库 426

安装Sinatra gem 427

一个简单的Sinatra应用 428

请求类型 430

资源路径 431

Sinatra路由 432

HTML中建立一个电影列表 435

从Sinatra访问HTML 436

存放电影数据的类 438

Sinatra应用中建立一个Movie对象 439

ERB嵌入标记 440

HTML中循环处理多个电影名 446

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

建立一个HTML表单增加电影 450

HTML表 451

用HTML整理表单 452

你的Ruby工具箱 454

15 保存与加载数据 456

保存和获取表单数据 456

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

为POST请求建立一个Sinatra路由 461

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

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

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

查找下一个可用的电影ID 473

Sinatra应用中使用MovieStore类 476

测试MovieStore 477

从MovieStore加载所有电影 478

Sinatra应用中加载所有电影 480

建立各个电影的HTML链接 481

Sinatra路由中的命名参数 484

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

按优先级顺序定义路由 486

YAML::Store中查找Movie 489

单个电影的ERB模板 490

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

你的Ruby工具箱 497

附录i 其他 500

#1其他酷库 500

#2内联if和unless 502

#3私有方法 503

#4命令行参数 505

#5正则表达式 506

#6单例方法 508

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

#8用Rake自动完成任务 511

#9Bundler 512

#10其他图书 513

返回顶部