Programming Ruby 2nd 学习笔记
作者: 来源:zz 发表时间:2007-09-21 浏览次数: 185 字号:大 中 小
本文是我学习programming ruby 2nd的笔记,由于我熟悉的语言是java,python,所以会在其中夹杂一些ruby与java,python的比较,文中的其他语言一律指java,python。格式按原文的顺序,我只是按我阅读的顺序来更新本文,若没时间,更新会很慢。
好像我的电子文档有问题,不少目录结构不正确。
第一版序言
Ruby创始人的序言
第二版序言
还是Ruby创始人的序言
前言
一些废话,不过看了可以增加一下见识J
路标
这本书主要分成四部分:
l Ruby的方方面面:语法级别的详细说明
l Ruby设置:对于ruby SDK命令行,以及配套工具使用说明
l Ruby详细:对ruby语言的关键点详细说明
l Ruby参考手册:比较完整的参考手册,差不多占了本书的一半篇幅
作者建议了各种不同类型的读者的阅读方式:
l 如果你是个初学者:你最好从第一部分的教材开始,把库参考放在手边,你就可以写程序了。
l 如果你已经精通Perl,Python,Java或者Smalltalk,你可以从第1章开始,熟悉了ruby安装与运行后,然后阅读第2章关于ruby基本特性的介绍,接着你可以采取较慢的方法(按顺序阅读),或者略过这些详细说明,直接跳到第三部分的高级部分,最后参看第四部分的库参考。
l 专家、大师、和那些“我讨厌冗长的教材”的人可以直接跳到到第22章的语言参考,然后翻一下第四部分得库参考,然后把这本书作为一个咖啡杯垫。
ruby的方方面面
开始
安装ruby
运行ruby
Ruby文档:RDoc与ri
ruby新手上路
ruby是一门面向对象语言
每种语言都宣称自己是OO语言,只是不同的支持方式,java说自己比C++来的更OO,更简单;python说自己比java更”对象”,就连方法都是对象。但关键一点是,编译型的语言不能直接拿来跟python等动态语言相比,很多特征没有可比性,尤其是对OO特征的比较。总之,不能为了那个”纯”,而让编码很难受,可以参看原文作者的辩解J
ruby的一些基本知识
1. 不需要在行尾加上分号,一行一个语句
2. Ruby注释开始于#号,结束在行尾,缩排没有特殊意义,就是每行的开头不缩行,不过为了可读性,不建议这样做
3. 方法是由关键字def来定义的,紧跟着方法的名字。Ruby不使用大括号来划定复合语句和定义的界限,而是简单地用关键词end来结束它们
4. 函数调用可以不用括号,但是,优先规则会使哪个参数被哪个方法使用变得复杂,所以我们建议除了极简单的情况,还是使用圆括号为好
5. 单引号与双引号之间的不同是Ruby在转换字面值到字符串对象时所处理的数量,单引号的情况下会少。除了一些例外,字符串字面值就是字符串的值。
6. 双引号的情况下,Ruby要做更多的处理,首先,把反斜杠开头的字符替换成二进制值。最常见的是"\n"(被替换成换行符);第二点,Ruby要修改双引号括住的字符串,字符串中的#{表达式}序列要用表达式的值来替换(如果表达式是一个简单的全局变量、实例或者类变量,那么就不必写出大括号)
7. Ruby方法的返回值默认是最后被求的表达式的值(不过,我觉得这没什么好处)
8. 命名约定:
l 名字前面的第一个字符表明这个名字的用法,局部变量、方法参数和方法名称应该用一个小写字母开头或者一个下划线;
l 全局变量用美元符作为前缀($),而实例变量用@开头,类变量用两个@开头;
l 最后,类名、模块名和常量应该大写字母开头。
l 词首字母后面可以是字母、数字和下划线的任意组合(规则规定,@后面不可以直接跟数字)
数组与hash
1. Ruby的数组和哈希是有序集合(注意在java中,hash有无序的实现类,也有有序的;python与ruby一样)
2. 创建空数组两个方法: empty1 = []; empty2 = Array.new
3. 对于创建字符串的数组,可以使用快捷方式%w: a = %w{ ant bee cat dog elk },输出结果: ["ant", "bee", "cat", "dog", "elk"]
4. hash的创建与python一样,使用大括号”{}”,可能都是动态语言的缘故吧
5. 如果使用一个不存在的键来索引哈希,默认返回nil。正常情况下这是很方便的,因为nil用在条件表达式中就是false。
6. 创建一个新的空的哈希时改变默认值是很容易的,比如:histogram = Hash.new(0)
来源: