走近 Ruby 的世界(五)

Ruby 单行注释用 #,没有 /* */ 这样的多行注释方式,但是可以用文档注释方式来进行多行注释:

=begin 注释描述
       中间的都是注释内容
=end

文档注释,像 Java 的 Javadoc, .net 的 ndoc,Ruby 也有 rdoc,Ruby 的 文档注释是也是在 method,class 和 module 定义之前进行注释的,注释的内容给 rdoc 生成 HTML 帮助文档,也给 ri 用的。也有一套语法,用 # = Headings 这样的语法,还支持些 HTML 代码。

Ruby 看到全大写的标识符,如 PI,还有像 LikeThis 或 LIKE_THIS 这样的标识符就认为是常量,对它们重新赋值就会告警:

warning: already initialized constant LikeThis

命名成 like_this 就是变量,这也是 Ruby 的约定优于配置,常量就是大写命名。

Ruby 是大小写敏感形的,我所接触的也就是 Bill 的 Basic 是大小写不敏感的。

和 Java 一样,Ruby 的变量、方法、类、模块等都支持用 Unicode 字符,比如变量   名字="Unmi"; puts 名字

但是对于常量来说还是必须以 ASCII 的大写字母开始的。

特殊符号的应用,在前面也有讲到,主要是 $ @ ? ! = 这几个符号的约定:

$    以它为前缀的常代表全局变量,例如像 Perl 一样,有许多内置的变量用 $_、$~、$@、$& ... 这些来表示,它们可以在代码中直接引用。

@   实例变量前加一个 @,类变量前加两个,即 @@

?     一般在返回 Boolean 的方法名会加 ? 后缀,empty?

!      后缀为 ! 的方法提醒你可要注意啦,它的返回值是可变的,而不是个拷贝,可以通过返回值修改内部状态。

=    以等号结尾的方法调用时可转换为赋值操作,如调用方法 o.m=(v) 转换成赋值形式就是 o.m=v

在 Ruby 中也可以直接使用像 C/C++ 中的两个"宏定义",如

puts __LINE__    #输出当前的执行行号
puts __FILE__    #输出当前执行的文件全路径

Ruby 通常用换行来作为语句的终结,像 C/Java 一样可以用分号来作为语句的终结,但在 Ruby 中一般只会用分号来分隔一行上的多个语句,其他时候多不会去分号。

Ruby 也需要智能的去推断新行是否就是开始了新的语句,例如,在新的一行前的语句是完整的,下一行将是新的语句,否则两行将会一同解析,这要求你自己谨慎些。

如:

而:

还有 return 和 break 语句时需要注意这样 情况

但是你可以放心的在操作符、点号、方法调用时的逗号(分隔参数)、声明数组或哈稀时加换行,它不会终结上行的语句。

再保险些就是长语句想要写在多行时,又怕被误认为多行,就用反斜线分隔,如:

在 Ruby 1.9 之后有一个规则就是,凡是新行的第一个非空字符为点号,就会接续到上一行去,像方法的链式调用:

Ruby 允许在方法调用时省略括号,这也是 Ruby 优雅的一种体现,让方法调用看起来像是个普通语句,但却会带来一个有害的空格依赖,像下面的两个语句就知道了:

第一个语句不会有歧义的,就是方法调用后的结果加 1,第一个语句,如果有 -w 打开的警告就报告:

warning: don't put space before argument parentheses

解决办法就也就是不要在方法名和括号间加留用空格,如果再有分不清的就别省略了括号。

本文链接 https://yanbin.blog/close-to-ruby-world-5/, 来自 隔叶黄莺 Yanbin Blog

[版权声明] Creative Commons License 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments