Ruby 关于方法调用的一些补充

2017-10-20  本文已影响5人  changsanjiang

把数组分解为参数

在调用方法时, 如果以*数组这样的形式指定参数, 这时传递给方法的就不是数组本身, 而是数组的各元素被一次传递给方法. 但需要注意的是, 数组的元素个数必须要和方法定义的参数个数一样.

def foo(a, b, c)
  a + b + c
end

p foo(1, 2, 3)     #=> 6
args1 = [2, 3]
p foo(1, args1)    #=> 6 
args2 = [1, 2, 3]
p foo(*args2)      #=> 6

把Hash作为参数传递

我们用{ ~ }来表示Hash, 将Hash作为参数传递给方法时可以省略{}

def foo(arg)
  arg
end

p foo({"a" => 1, "b" => 2})
p foo("a" => 1, "b" => 2)
p foo(a: 1, b: 2)

其实关键字参数就是模仿这种散列作为参数传递的写法而设计出来的. 使用关键字参数定义方法, 既可以对键进行限制 又可以定义参数的默认值. 因此建议大家在实际编写程序时, 尝试使用关键字参数.

上一篇 下一篇

猜你喜欢

热点阅读