对于 Block,可以用 {} 或 do...end 来调用,如:
1 2 3 4 5 6 |
3.times { print "Ruby!" } #可以写成 3.times do print "Ruby!" end 1.upto(10) do |x| print x end #也可以写成 1.upto(10) {|x| print x} |
一般是多行时用 do...end,单行时用 {}
但对于 module、class、method 的声明不能像 C/Java 那样用 {},要用 ...end 来定义。
Ruby 的文件结构
1 2 3 4 5 6 |
#!/usr/bin/ruby -W #shebang 注释,给 Unix/Linux 的脚本说明的,必须放在第一行 #coding: utf-8 #指定编码的注释,放在第二行,如果没有 shebang 注释就放第一行 require 'socket' ... __END__ #代码结束标识,下面为程序数据,可用 IO 的 DATA 读取的,像是可执行文件的.data 数据区 ... |
字符码码的注释,对于 Emacs 用户可写成 # -*- coding: utf-8 -*- 。冒号可写成 等号,即 coding = utf-8。字符集是大小写不敏感的,写成 uTf-8 也行。
Ruby 又分源代码编码(Source Encoding) 和 默认外部编码(Default External Encoding)。源代码编码就是前面讲的,默认外部编码是脚本存文件时用的编码,这影响到了 Ruby 解释器要怎么读入它,执行时可用命令来指定:
#ruby -E utf-8
#ruby -Eutf-8
#ruby --encoding utf-8
#ruby --encoding=utf-8
和其他的脚本代码一样,Ruby 脚本是从前至尾执行的,没有 main() 这样的玩意,但如果你的脚本中有 BEGIN 这样的块,就会先执行 BEGIN 块中的代码,然后再从头至尾,最后执行 END 块,例如:
1 2 3 4 5 6 7 |
END{ puts "over" } puts 456 BEGIN{ puts 123 } |
执行结果为:
123
over
456
最后,如果有 END 就执行 END 块。BEGIN 和 END 块可有多个,多个时,BEGIN 块按出现的顺序执行,END 块却按与出现的相反顺序执行。
Ruby 脚本执行在遇到下面几种情况结束:
1. 执行了一条语句导致程序的结束,例如 exit!
2. 到达了文件的末尾
3. 遇到了 __END__
可以给 Ruby 脚本用 at_exit 函数加上退出时的勾子,即 "shutdown hook"。
本文链接 https://yanbin.blog/close-to-ruby-world-6/, 来自 隔叶黄莺 Yanbin Blog
[版权声明] 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。