走近 Ruby 的世界(六)

对于 Block,可以用 {} 或 do...end 来调用,如:

13.times { print "Ruby!" }   #可以写成 3.times do print "Ruby!" end
2
31.upto(10) do |x|
4    print x
5end
6#也可以写成  1.upto(10) {|x| print x}  
一般是多行时用 do...end,单行时用 {}

但对于 module、class、method 的声明不能像 C/Java 那样用 {},要用 ...end 来定义。

Ruby 的文件结构
1#!/usr/bin/ruby -W     #shebang 注释,给 Unix/Linux 的脚本说明的,必须放在第一行
2#coding: utf-8         #指定编码的注释,放在第二行,如果没有 shebang 注释就放第一行
3require 'socket'
4...
5__END__                #代码结束标识,下面为程序数据,可用 IO 的 DATA 读取的,像是可执行文件的.data 数据区
6...

字符码码的注释,对于 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 块,例如:
1END{
2   puts "over"
3}     
4puts 456  
5BEGIN{
6  puts 123
7}

执行结果为:

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's Blog
[版权声明] 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。