Ruby - 具名参数
1 | def func(a:,b:) |

在方法定义中,有两个以冒号结尾的参数。而在调用的时候,却更像是使用哈希。
Ruby的匹配规则会使得a和b的绑定值与期望的一致,而不需要去研究是怎么转化成哈希的。
同时,通过具名参数给其一个默认值们可以将关键字参数作为可选的,这样就会是参数列表看起来更像哈希。
1 | def func(a:1,b:2) |
如果调用函数时没有传递该参数值,则会使用其默认值。
而如果采用另外一种方式,调用一个使用具名参数的方法时,传递给方法的值并没有声明过。
这时候,有一个参数变量可以吸收所有未声明的变量参数。
1 | def func(a:1,b:2,**c) |

如果没有可以吸收的参数,类似于func(x:1,y:2)的方法调用仅仅是随着哈希传递,这有可能失败,也有可能不会,最终取决于方法所需要的参数。
当然,也可以合并具名参数和非具名参数。
1 | def func(x,y,*z,a:1,b:,**c,&block) |

对该方法的说明:
- 带有两个必选的定位参数
x,y - 拥有一个’吸收’参数
z用以处理跟随在定位参数后额外的参数(这里吸收了3,4,5 - 拥有一个可选和一个必选参数(a是默认的1,b是绑定的10
- 拥有一个’吸收’参数c用于吸收未知的具名参数(p和q哈希)
- 拥有一个变量用于绑定代码块,仅当代码块(block)存在时
- Post title:Ruby - 具名参数
- Post author:Varsion
- Create time:2020-09-16 15:12:05
- Post link:https://blog.varsion.cn/post/6d98def4.html
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
Comments