Thursday, October 09, 2008

(6)Ruby中标点符号的前缀与后缀

在本节的第五部分我们提到了用等号结尾的方法。Ruby中的方法同样可以以问号和叹号结尾,问号通常用于谓语方法,这种方法返回一个布尔值。例如Array和Hash类都定义了一个empty?方法,这个方法用于测试数据结构中有没有元素。如果方法以叹号结尾,这意味着我们在使用这个方法的时候要小心,比如大多数核心的Ruby类库方法都提供两个同名的方法,一个以谈好结尾,一个没有,区别在于,如果使用没有叹号结尾的方法,你在调用它的时候会得到当前对象的一个拷贝而不会修改原始对象,而如果使用带有叹号的方法,你在调用它的时候会直接修改当前对象的值。比如Array类对象中定义的sort和sort!方法。
我们再来谈谈前缀符号,在定义变量的时候如果你在变量前面加上$符号,这说明它是一个全局变量,局部变量使用@开头,类变量使用@@开头。开始的时候你可能需要适应一下这种用法,但是以后你就会发现,你要感谢中这语法它让你很清楚的知道你现在使用的变量的范围。这种符号前缀是为了消除Ruby中灵活的语法结构带来的歧义。你可以这样理解符号前缀的好处,我们话很少的待解消除了在方法后加上括号的累赘:)。

No comments: