在ruby中定义方法时,传入参数的方式是非常灵活的,今天总结下ruby中的参数类型和一些使用方法:
1. 必选型参数(Required Arguments)
这样当你调用该方法时必须同时传入两个方法
2. 可选型参数(Optional Arguments)
3. 变量型参数(Variable Arguments), 这种形式允许传0或多个参数,即使调用时忘记传参ruby也不会报错,传入的参数会被放到一个数组中,形式是参数前面加一个*.
这样你在调用方法的时候可以传入任何数量和类型的参数,包括none。即如果调用method时不传入参数,p表示一个空数组。如果传入多个参数,那么参数的值就是包含这些参数的数组。
如果调用method时不传入参数,p表示一个空数组。如果传入多个参数,那么参数的值就是包含这些参数的数组。
4. hash型参数(Keyword Arguments),该类型使用**arg双星号表示
5. block参数,该类型使用&block表示,&block是传入该方法中的block对象的一个引用
上面显示block为一个Proc对象,我们调用Proc的call方法看下:
上面介绍了几种种参数形式,而实际的使用中多是混合使用这些参数的,我们找几个例子分析一下.
首先尝试下最简单的混合方式,必选参数 + 可选参数
现在我们定义一个参数复杂些的方法,包含无规则顺序的必选和可选参数
包含必选,可选和默认值的参数
通过上面的几个例子证明了ruby中定义方法参数的灵活性,但是定义方法时有一个准则必须遵守,那就是可选参数不能定义在带有默认值的参数之前,如:
所以正确的传参顺序为: required -> optional -> variable -> keyword -> block