概括、ruby程序由一个或多个ruby源文件组成,源文件由模块组成,模块内部有控制结构、类对象、方法、及表达式等元素,下面就按照这个思路来总结ruby的程序组织结构。
一、源文件
1.1、文件包含
#file1.rb
inc_path=$0.sub(/\/\w+\.rb/,"") #获取当前路径的目录
$:.insert(-1,inc_path) #将当前路径加入到load路径数组
require "file2.rb"
require "file2.rb" #require包含文件只会被导入一次
load "file3.rb"
load "file3.rb" #每次load都会无条件再次导入文件
#file2.rb
print "file2.rb is included\n"
#file3.rb
print "file3 is included\n"
</div>
1.2、源文件执行顺序
#coding=utf-8
=begin
这里是
多行注释
=end
END{print "end1\n"}
END{print "end2\n"}
#END块的执行顺序与出现顺序相反
print "text\n"
BEGIN{print "begin1\n"}
BEGIN{print "begin2\n"}
#BEGIN块的执行顺序与出现顺序相同
#BEGIN-TEXT-END
#__END__开头的行后面的内容被忽略
__END__
print "no_text\n"
</div>
1.3、源文件书写规则
◆大小写敏感
◆换行符后只能有空白符,并且都会被忽略
◆类和模块及常量名要以大写字母开头,变量以小写字母或者unicode开头
二、模块
#module1.rb
inc_path=$0.sub(/\/\w+\.rb/,"") #获取当前路径的目录
$:.insert(-1,inc_path) #将当前路径加入到load路径数组
require "module2.rb"
print Mymod::VAR1,"\n"
Mymod.out
include Mymod #把Mymod导入到当前名字空间
print VAR1
#module2.rb
print "module2.rb is included\n"
module Mymod
var1=99 #模块内的变量
VAR1=100 #模块内的常量
print "Mymode is included,var1 is ",var1,"\n"
def Mymod.out #模块内的方法必须加上模块名
print "Mymod.out run\n"
end
end
</div>
三、控制结构
ruby的控制结构和其他语言一样无非就是顺序,分支及循环,但写法上相当的灵活。
3.1、分支结构之if
#if.rb
num=100
if (num>200) #可以用unless进行条件取反
print "num>200\n"
elsif num>100
print "num>100\n"
else
print "num<=100\n" #此句执行
end
print "num<=100\n" if num<=100 #if语句可后置,并且if语句本身也是表达式也具有值
if num<=100 then print "num<100\n" #then可用:替换
</div>
3.2、分支结构之case
num=100
str1=\
case
when num>200 then "num>200"
when num>100 then "num>100"
else "num<=100" #else不使用then
end
print str1,"\n"
case num
when 201 : print "num>200"#:和then起到相同的作用
print 101 when num>100
else print "num<=100"
end
</div>
3.3、循环结构
num=1
while num<5 #反义词until
print num
num+=1
end
print "\n"
arr1=[1,2,3,4,5]
for i in arr1
print i
end
</div>
num=1
loop{ #注意{必须和loop在同一行
num+=1
next if num==3 #不输出3
redo if num==4 #把循环体内此行的前面的语句再执行一遍
break if num>5 #大

