gpt4 book ai didi

ruby - 引用可枚举方法 block 内的调用者对象

转载 作者:太空宇宙 更新时间:2023-11-03 16:02:43 25 4
gpt4 key购买 nike

假设我想获取数组中只出现一次的第一个数字。

所以,通常我会按照以下方式进行:

arr = [1,1,2,2,3,4,4]
arr.detect { |elem| arr.count(elem) == 1 } # => 3

我一直想知道是否有可能在不需要事先将其分配给变量的情况下获取数组,就像这样:

[1,1,2,2,3,4,4].detect { |elem| self.count(elem) == 1 } # => NoMethodError

这当然是行不通的,因为上面的self指的是Object

那么,是否有可能以某种方式引用一个对象,在其 block 内调用可枚举方法,如上例所示?

最佳答案

哈,这是一个有趣的练习,谢谢:

module Enumerable
def with_self
return to_enum(:with_self) unless block_given?
each do |element|
yield element, self.entries
end
end
end

[1,1,2,2,3,4,4].detect.with_self { |elem, zelf| zelf.count(elem) == 1 }

关于ruby - 引用可枚举方法 block 内的调用者对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21149252/

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