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

Ruby中是否存在可调用于对象以返回其自身的方法?

在Ruby中获取返回自身的方法

嘿,这个问题问得挺有意思!确实,Ruby里没有名为self的方法(因为self是个关键字,不是方法标识符),所以你尝试的arr.group_by(&:self)会报错NoMethodError。不过我们有完美的替代方案:

1. 使用Object#itself(推荐)

Ruby 2.2及以上版本引入了itself方法,它的作用就是返回调用它的对象本身,完全符合你的需求!用它来实现你的分组需求非常简洁:

arr = [1,1,2,3,3,3]
grouped = arr.group_by(&:itself)
# 输出结果:{1=>[1, 1], 2=>[2], 3=>[3, 3, 3]}

这个方法是Ruby官方提供的,安全且通用,除了group_by,在任何需要元素返回自身的场景都能用上,比如arr.select(&:itself)(会过滤掉nil和false,因为它们的itself就是自身,会被转为布尔值判断)。

2. 手动定义一个返回自身的方法(兼容旧版本Ruby)

如果你还在使用Ruby 2.2之前的版本,可以给Object类添加一个自定义方法来实现这个功能:

class Object
  def return_self
    self
  end
end

# 然后就可以这样用:
arr = [1,1,2,3,3,3]
grouped = arr.group_by(&:return_self)

不过要注意:给Ruby核心类(比如Object)添加方法可能会和其他库的方法冲突,所以如果是在项目中使用,最好考虑用模块扩展或者更限定的范围,而不是直接修改全局Object类。

总结一下,itself就是你要找的那个“返回自身”的方法,用它替代&:self就能完美实现你的需求啦!

内容的提问来源于stack exchange,提问作者Max Williams

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:27:48