1 Star2 Stars3 Stars4 Stars5 Stars
Loading ... Loading ...
sban : personality of ruby grammer

学一门语言有两步,一是语法,二是基本类库。至于OO,则在语言之外,与具体语言无关。本文主要介绍Ruby的语法与其它高级语言的不同之处。

Ruby的语法与其它高级语言有一些不同之处,主要如下:

一、以#做单行注释不足为奇。但以=begin与=end做多行注释,多少比起AS的/**与*/有些罗嗦。用ubuntu的同志一定很熟悉#注释,其常直接用于单句代码之后。

二、AS3,php5以直接以回车换行代码,因为其代码都是以;结尾,没有;编译器便不认为该行代码已结。ASP则用_。Ruby则是用\。

三、Ruby检查类型是用运算符defined?,此外用eql?比较对象的值,用equal?比较对象的内存地址。Ruby中返回值为布尔的函数或操作符,多数以?结尾。这不同与其它语言。

四、Ruby有区间的概念。2..4表示2、3、4。2…4表示2、3。

五、Ruby仍然以=赋值。但可以按顺序赋值。如a,b=b,a,a与b交换值。

六、在AS3中===表示全等。而在Ruby中,===表示右边对象是否在左边区间内,如(2..4)===3,则返回true。
七、<=>这种复合运行符在AS3与C#均未见过。它比较两个对象的值,如a<=>b,如果a>b则返回1,返之返回-1,相等返回0。从这里也可以看出,Ruby的运行符也是方法。

八、空值不是null。而是nil,这个英文单词也是空的意思,但比null更短,却让人看着不如null正统。在字典里,null是计算机语言,而nil不是。

九、$array<<2<<'f'。<<在这里表示把2、f添加进数组$array中。反之,$array>>2不并不表示把2比数组中移出,此语法是错误的。

十、Ruby的循环语法,除了break,next,还有redo与retry。redo表示重新、从头开始整个循环;retry表示重复当前循环体。

十一、return true if 条件。这种返回方法在C#,AS中没有。但很灵活。

十二、Ruby不肯用花括号用代码块标记,而用end代替。Ruby把{}用在了code block中。Ruby有五个很多意思的操作符:times,upto,downto,each,step。

20.times{ print ’sban’ } #在屏幕上打印sban二十次
1.upto(5){|i| print i } #12345
5.downto(1){|i| print i} #54321
1.step(5,2){|i| print i} #135
‘a’.upto(’f'){|c| print c} #abcdef
数字与字母直接就可以像对象一样使用,这也说明在Ruby中一切皆是对象。

十三、在Ruby中,全局变量以$开头,实例变量则为@,类变量则以为@@,类名、模块名、常量名以大写开头。

十四、定义类方法不是function,而是def。去除方法则是undef。

十五、继承不是extends,而是<。extend关键字在Ruby用于某个类的对象包含某模块。

sban 2008/8/20于北京香山
原文链接:http://blog.sban.com.cn/2008/08/20/sban-personality-of-ruby-grammer.html

版权所有,欢迎转载。转载勿请注明作者出处

Related Posts

Last Modified

This entry was posted on 2008年08月20号 and is filed under technique. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply