Ruby语言快速入门之对象,方法和类
在 Ruby 中,一切都是对象。对于那些喜欢使用高度 面向对象 的语言(例如Smalltalk,Eiffel或CLOS)的用户来说,这是非常受欢迎的。例如1,2,3或10.8等等都是对象,而不是如 Java 或C++中的原始类型;字符串是对象,类和方法也都是对象。例如,下面都是有效
在
Ruby中,一切都是对象。对于那些喜欢使用高度
面向对象的语言(例如Smalltalk,Eiffel或CLOS)的用户来说,这是非常受欢迎的。例如1,2,3或10.8等等都是对象,而不是如
Java或
C++中的原始类型;字符串是对象,类和方法也都是对象。例如,下面都是有效的Ruby代码(在Ruby中,注释行是以"#"符号界定的):
clearcase/" target="_blank" >cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
#对象-34的绝对值 -34.abs #对一个浮点数进行四舍五入处理 10.8.round #返回一个字符串对象的大写且逆转的副本 "This is Ruby".upcase.reverse #返回数学sin方法的参数个数 Math.method(:sin).arity |
图5.Ruby是全对象化的:在Ruby中,整数,浮点数,字符串,甚至类和方法都是对象。这里的代码展示了针对这些类型对象的方法调用。 |
在Ruby中,所有功能都是通过调用对象上的方法(或操作)实现的。事实上,Ruby中的方法调用就象其它程序语言中的函数或过程调用一样。
就象在所有面向对象程序语言中一样,对象是从类中创建的。Ruby库中提供了许多预构建的类。你可以修改这些类或构建你自己的类。Ruby中的类是使用"class"关键字定义的。类名开始是一个大写字母。类定义以"end"关键字结束。因此,一个Rectangle类的定义可能有如下形式:
为了把方法添加到类,可以使用def关键字。方法的定义也应该以end关键字结束。跟随def关键字和方法名后面就是方法参数。把一个area方法添加到上面的Rectangle类的代码看上去如下所示:
class Rectangle def area (hgt,wdth) return hgt*wdth end end |
对于那些熟悉其它程序语言的用户,他可能注意到一些差别。Ruby并不使用任何花括号来限定类或方法,也不使用分号或其它字符来表示程序语句行的结束。Ruby的目标,根据它的创建者说明,是简单、易用并使编码成为一件"趣事"。谁想记住所有的那些分号?没有意思!在Ruby中,只要你把语句放在一行上,不需要分号或其它代码行结束标记。顺便说一下,在area方法参数周围的括号是不必要的。在默认情况下,Ruby返回一个方法中最后的内容,因此return关键字也可以省略。因此,你可以建立如下简单编码的Rectangle类:
class Rectangle def area hgt, wdth hgt*wdth end end |
尽管上面代码是有效的,但是小括号还是被推荐使用于方法参数表达的,这主要是为了实现较好的可读性。