Ruby中方法参数带下划线与不带下划线的区别是什么?
Ruby方法参数中下划线的作用与区别
参数可用性差异
- 不带下划线的
user参数:在方法内部可以直接通过变量名访问传入的参数值,比如在方法体内编写puts user是合法操作。 - 带下划线的
_user参数:它是Ruby社区约定俗成的占位符参数,虽然能接收传入的值,但按照编码惯例,它表示这个参数不会在方法内部被使用。部分代码检查工具(如RuboCop)会对直接使用_user的行为发出警告。
- 不带下划线的
代码规范检查的不同反应
- 若定义了
user参数但全程未使用,RuboCop这类代码规范工具会抛出「未使用参数」的警告。 - 使用
_user参数时,工具会识别出你是主动声明参数但不使用,不会触发未使用参数的警告。
- 若定义了
方法签名的唯一性
这两个方法的签名在Ruby中是完全一致的——Ruby判断方法签名只看参数数量和类型注解(如果有),不区分参数名称。因此你无法在同一作用域内同时定义这两个方法,后定义的方法会覆盖前一个。
内容的提问来源于stack exchange,提问作者Haseeb Ahmad
相关产品推荐
相关产品推荐

