gpt4 book ai didi

ruby - 有没有写 `{|x| x}` 的捷径?

转载 作者:数据小太阳 更新时间:2023-10-29 06:27:56 25 4
gpt4 key购买 nike

我们经常在这样的符号上使用 & 符号来缩短 block :

some_array.group_by(&:foo)

是否有类似的方法来缩短像 {|x| 这样的表达式? x}?

some_array.group_by{|x| x}

如果有一个返回self的方法Object#self,那么我们可以这样做

some_array.group_by(&:self)

但不幸的是,没有这样的方法。就字符数而言,它可能更长,但可读性提高。

最佳答案

#itself 是在 Ruby 2.2.0 中实现的。


您可以访问 Ruby 核心团队关于此功能的讨论 here .

作为一个有趣的类比,#ergo 方法 has been proposed ,这将产生给定 block 的接收者。

如果您还没有升级到 Ruby 2.2.0,您可能希望反向移植 #itself 和/或定义 #ergo 如下:

class Object
def itself; self end
def ergo
fail ArgumentError, "Block expected!" unless block_given?
yield self
end
end

然后:

some_array.group_by &:itself

关于ruby - 有没有写 `{|x| x}` 的捷径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16932711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com