Ruby块参数中下划线(_)占位符的作用是什么?
Ruby块参数中下划线(_)占位符的作用解释
先看你给出的代码:
def remove_every_other(arr) arr.select.with_index { |_,idx| idx.even? } end
这里的下划线_是Ruby里的占位符参数,核心作用如下:
- 用来占住方法传递的参数位置,但明确表示这个参数在块内部不会被使用。
select.with_index会给块传递两个参数:数组元素(第一个)和对应索引(第二个)。而这段代码的逻辑只需要用索引idx判断是否为偶数位,完全不需要用到元素本身,用_代替第一个参数的位置,既符合方法的参数传递规则,又能避免声明一个冗余的无用变量(比如写|elem, idx|却从来不用elem,会让代码显得拖沓,甚至部分代码规范会发出警告)。
另外补充个小细节:_本身是Ruby合法的变量名,如果你后续不小心调用它,也能拿到对应的值,但行业里约定俗成用它来标记“此参数无需使用”,是提升代码可读性的小技巧——其他开发者看到_就能立刻明白:这个参数在当前块逻辑里没用,不用纠结为什么没被调用。
比如如果不用_,写成|elem, idx| idx.even?,功能完全一致,但别人读代码时可能会疑惑“是不是漏写了和elem相关的逻辑?”,用_就不会有这种歧义。
内容的提问来源于stack exchange,提问作者wanderingnowhere
相关产品推荐
相关产品推荐

