Programming Ruby学习笔记一

最近在学习Programming Ruby,做点读书笔记来记录下自己的成长也是不错的。当然更希望的是各位大牛能指出本人的不足,在这里先谢谢大家了。

 

第一章     入门

    讲的是如何安装Ruby,在Ruby的官方网站上有很详细的安装指南,无论你是Liunx,Windows还是Mac,总有办法适合你。

 

第二章     Ruby.new

    作者在这章给大家介绍了下Ruby的一些基本特性。摘录如下:

 

2.1 Ruby是一门面向对象语言

    在Ruby中,通过调用构造函数(constructor)来创建对象,这是一种与类相关联的特殊方法。标准的构造函数被称为new。

    Song1 = Song.new(“Ruby Tuesday”)

    通过构造函数,可以发现Ruby和大多数别的语言之间的一个很大的差别。例如在Java中,是通过调用另外一个函数来得到某些成员数据的绝对值,并把结果传回数据本身,Java中求绝对值可以这么写:

    number = Math.abs(number);

    而在Ruby中,确定绝对值的能力内建在数字中——处理细节在内部实现中。只要发送abs消息到一个数字对象,让它去得到绝对值即可。

    number = number.abs

    个人认为就是因为这种特性,作者才会认为Ruby是真正的面向对象语言。

 

2.2 Ruby的一些基本知识

    方法(method)用关键字def定义,后面跟着方法名称和在括号中的方法参数,Ruby没有使用话括号来界定复杂的语句和定义的程序体。可以使用end结束这个程序体。

    最常用的创建字符串对象的途径可能是使用字符串字面量(literals),即一组单引号或双引号之间的字符序列。

    Ruby对单引号处理得很少。除了极少的一些例外,键入到字符串字面量的内容就构成了这个字符串的值。

    Ruby对双引号字符串有更多的处理。首先寻找以反斜线开始的序列,并用二进制值替换它们。其中最常见的是\n,它会被回车换行符替换掉。其次是字符串内插(expression interpolation),#{表达式}序列会被“表达式”的值替换。

    Ruby方法返回的值,是最后一个被求值的表达式的值,所以有时候可以省略return语句。

    Ruby的命名惯例:

    局部变量、方法参数和方法名称都必须以小写字母或下画线开始。

    全局变量以$为前缀,实例变量以@为前缀,类变量以@@为前缀。

    类名称、模块名称和常量都必须以一个大写字母开始。

    包含多个单词的实例变量名称在词与词之间使用下画线连接,包含多个单词的类变量名称使用混合大小写(每个单词首字母大写),方法名称可以?、!和=字符结束(不同的字符代表的意义不一样)。

 

2.3 数组和散列表

    使用数组字面量(array literal)——即方括号之间放一组元素——可以创建和初始化新的数组对象。Ruby数组的索引从零开始。

    Ruby中用nil表示没有任何东西的对象,有点类似Java里面的null。但是要注意,在Ruby中,nil是一个对象。

    散列表字面量(hash literal)使用花括号。这个字面量必须为每一项提供两个对象:一个键(key)和一个值(value)。

 

2.4 控制结构

    Ruby具有常见的控制结构,如if语句和while循环。另外Ruby中这些语句的程序体没有花括号,使用end关键字来表明程序体的结束。

    如果if或while语句的程序体只是一个表达式,Ruby的语句修饰符(statement modifiers)是一种有用的快捷方式。只要写出表达式,后面跟着if或while和条件。这点跟Perl类似。

 

2.5 正则表达式

    正则表达式只是一种指定字符模式的方法,这个字符模式会在字符串中进行匹配。

    在Ruby中,正则表达式是对象并且可以当作对象来操作。

    =~匹配操作符可以用正则表达式来匹配字符串。如果在字符串中发现了模式,=~返回模式的开始位置;否则返回nil。因此可以在if或while语句中把正则表达式当作条件使用。

 

2.6 Block和迭代器

    Block是一种可以和方法调用相关联的代码块。可以用它实现回调,传递一组代码,以及实现迭代器。

    Block只是在花括号或者do_end之间的一组代码。

    一旦创建了Block,就可以与方法的调用相关联。把Block的开始放在含有方法调用的源代码行的结尾处,就可以实现关联。

    使用yield语句,方法可以一次或多次地调用(invoke)相关联的Block。

    可以提供参数给对yield的调用:参数会传递到Block中。在Block中,竖线(|)之间给出参数名来接受这些参数。

    在Ruby的库中大量使用了Block来实现迭代器:迭代器是从某种容器(collection)如数组中连续返回元素的方法。

 

2.7 读/写文件

    Ruby有一个完备的I/O库。

    puts输出它的参数,并在每个参数后面添加回车换行符。

    print也输出它的参数,但没有添加回车换行符。

    printf,在格式化字符串的控制下打印参数。

    gets,从程序的标准输入流读取下一行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值