Thursday, October 09, 2008

(5)Ruby中的赋值操作

Ruby中通过等号=将一个值赋给一个变量:
x=1
赋值操作可以与操作符+和- 联合使用:

x += 1          # 递加操作: 注意Ruby没有++ 操作。
y -= 1 # 递减操作:注意Ruby也没有--操作。

Ruby 还支持并行赋值,可以给多个变量同时赋值:

x, y = 1, 2 # 等同于 x = 1; y = 2
a, b = b, a # 交换两个变量的值
x,y,z = [1,2,3] # 将数组的值自动赋值到变量


Ruby中的方法支持返回多个值,我们可以利用这个特性给多个变量平行的赋值:

# 定义一个方法获得笛卡尔集
def polar(x,y)
theta = Math.atan2(y,x) # 计算角度
r = Math.hypot(x,y) # 计算距离
[r, theta] # 返回最终的值
end

# 下面的方法展示了如何通过一个方法的返回值给两个变量赋值
distance, angle = polar(2,2)


在Ruby中方法是可以以等号“=”结尾的,这种情况下Ruby允许通过复制操作来调用一个方法,比如下面我们定义一个类有一个方法名为x= 并且这个方法有一个参数,那么下面这两种调用方式是相同的:
#定义一个名为Test的类
class Test
def x=(v) # 定义一个只有一个参数的方法
print v # 打印这个参数
end
end
t=Test.new #创建这个对象
t.x=(1) #通常的方法调用模式
t.x=2 #通过赋值调用的模式

No comments: