Ruby类和对象
root@bt:~# gedit ~/friendly.rb
编辑内容如图中左边部分,右边shell里面的是运行结果:

Object类和Kernel模块
Object类是所有Ruby类的始祖,会在我们运行Ruby程序的时候自动出现,无需特别地语句召唤。Object类提供了class、inspect、object_id、to_s等方法
Kernel是Ruby的一个模块(module),模块很像类,但不能像类一样被实例化。不过在类里面包含或混入模块的时候不需要事先,即可在该类里面直接使用属于模块的方法。
Object类包含了Kernel模块。所以既然任何Ruby都能使用Object类,也就能使用所有属于Kernel的方法。最常用的Kernel方法有:print,puts,eval,exit,gets,loop,require,sleep,sprintf。
Ruby的注释
#我是一行注释
或者
=begin
我是第一行被注释的
我是第二行被注释的
我是第三行被注释的
=end
Ruby的变量类型
Ruby中变量的类型是动态类型(dynamic typing),一句话就是“行动似鸭就是鸭”(duck typing)。它不像C/C++和JAVA一样都是静态类型(statically typed),Ruby中不需要在声明变量的时候就指定它的类型,因为在ruby中变量的类型不是固定不变的,Ruby会自动为我们判断添加类型,我们在irb模式下验证这一点:
root@bt:~# irb
irb(main):001:0> x=5
=> 5
irb(main):002:0> x.class #询问x的类型
=> Fixnum
irb(main):003:0> x.kind_of? Integer #询问Ruby x是否是整数类型
=> true
irb(main):004:0> x=10.5
=> 10.5
irb(main):005:0> x.class
=> Float
irb(main):006:0> x.kind_of? Float #询问Ruby x是否是浮点数类型
=> true
irb(main):007:0> x=’Hello,snailgo’
=> “Hello,snailgo”
irb(main):008:0> x.class
=> String
irb(main):009:0> x.kind_of? String #询问Ruby x是否是字符串类型
=> true
Ruby并行赋值
root@bt:~# irb
irb(main):001:0> x,y,z=100,’hello,world’,99.56
=> [100, "hello,world", 99.56]
Ruby字符串操作
root@bt:~# irb
irb(main):001:0> string=’Hello,snailgo’
=> “Hello,snailgo”
irb(main):002:0> string1=string[0..4] #截取第1至第5位
=> “Hello”
irb(main):003:0> string2=string[-7..-1] #截取倒数第1位至倒数第7位
=> “snailgo”
Ruby数值计算
root@bt:~# irb
irb(main):001:0> 3+4
=> 7
irb(main):002:0> 12/3
=> 4
irb(main):003:0> 12**2
=> 144
irb(main):004:0> 12%5
=> 2
irb(main):005:0> x=5
=> 5
irb(main):006:0> x+=1
=> 6
irb(main):007:0> x-=2
=> 4
irb(main):008:0> x*=4
=> 16
irb(main):009:0> x/=2
=> 8
irb(main):010:0> Math.sqrt(16)
=> 4.0
Ruby if条件语句
value=0
if value.zero? then
puts “value is zero!”
end
Ruby数组与哈希
数组是采用非负整数为索引,哈希可以采用任意值为索引
root@bt:~# irb
irb(main):001:0> x=['zero','one','two'] #建立一个数组
=> ["zero", "one", "two"]
irb(main):002:0> x[0]
=> “zero”
irb(main):003:0> y={‘indexa’=>’valueA’,'indexb’=>’valueB’,'indexc’=>’valueC’}
#建立一个哈希表
=> {“indexa”=>”valueA”, “indexb”=>”valueB”, “indexc”=>”valueC”}
irb(main):004:0> y['indexb']
=> “valueB”
Ruby中方法的命名
如果方法最后一个字符是‘?’,则该方法返回true或者false,比如上面的kind_of?,eql?,zero?等
如果方法最后一个字符是‘!’,则会对对象本身造成修改,而不是对象的副本。
如果方法最后一个字符是‘=’,则该方法为’setter’,用来赋值用。
Ruby可变参数数目
只要在参数前面加‘*’号,传递给该方法的参数数目就可以灵活的改变
def num_args(*args)
…
end
puts num_args
puts num_args(1)
puts num_args(100,2,5,’three’)