def max(first, *rest) max = first rest.each {|x| max = x if x > max } max end上面这个方法中*rest是一个数组参数,你可以传递任意数量的参数给他。在Ruby1.8中要求这个带星号的参数必须位于所有参数(缺省参数和带&的参数)之后,也就是说它是最后一个参数。Ruby1.9中没有这样的要求,它不必是方法的最后一个参数,但是它必须位于缺省参数和&前缀的参数之后。
调用这个方法:
data = [3, 2, 1]
m = max(*data) # first = 3, rest=[2,1] => 3
如果没有这个*那么方法的计算结果可就不同了:m = max(data) # first = [3,2,1], rest=[] => [3,2,1]
No comments:
Post a Comment