You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 08:56:07