先贴出一段程序
print "赋值\n"
a = 1 ;b = 2 + 3 ;print "a=",a," b=",b,"\n"
a ,b = b ,a ;print "a=",a," b=",b,"\n"
a = b = 1 + 2 + 3 ;print "a=",a," b=",b,"\n"
a = (b = 1 + 2) + 3 ;print "a=",a," b=",b,"\n"
x = 0 ;print "\n"
a,b,c = x, (x+1), (x+2) ;print "a=",a," b=",b," c=",c,"\n"
print "关系运算符\n"
a=1; b=1.0; puts a==b
a=1; b=1.0; puts a.eql?(b)
a=1.0; b=1.0; puts a.equal?(b)
a=1.0; b=a ; puts a.equal?(b)
puts "aab" <=> "acb"
puts [5] <=> [4,9]
puts (0..9)=== 3.14
puts ('a'..'f')=== 'c'
程序运行的结果是
>ruby E3.8-1.rb
赋值
a=1 b=5
a=5 b=1
a=6 b=6
a=6 b=3
a=0 b=1 c=2
关系运算符
true
false
false
true
-1
1
true
true
>Exit code: 0
Ok,Now,我们开始分析
就“赋值”来讲,主要是 a,b = b,a 值得谈一哈,正如大家所猜测的那样,这既是一个变量值交换的语法,交换变量a和变量b的值
就“关系运算符”来讲,
运算符“==”,比较两个对象的值是否相等 ,返回 true, flase
运算符“!=”同“==”,只是结果相反
运算符“eql?”,比较两个对象的值、类型是否相等,返回 true, flase
运算符"equal?",比较两个对象在内存中地址是否相同,返回 true, flase
运算符“<=>”,比较两个对象的大小,大于、等于、小于 分别返回1,0,-1
"aab" <=> "acb" # -1 (第二个 a 的 ASCII 码小于 c)
[5] <=> [4,9] # 1 (第一个元素 5 > 4)
运算符"===",右边的对象是否在左边区间之内,返回 true, flase