gpt4 book ai didi

arrays - ruby 是否支持可枚举的 map_cons 方法或其等效方法?

转载 作者:数据小太阳 更新时间:2023-10-29 07:42:20 24 4
gpt4 key购买 nike

Ruby 有一个方便的枚举函数,叫做 each_cons .其中“为每个连续元素数组迭代给定 block 。”这真的很好。除了这绝对是一个 each 方法,它在完成时返回 nil,而不是像 map 那样返回一个你循环过的值的数组。

但是,如果我遇到需要迭代可枚举类型的情况,获取一个元素及其缺点,然后对它们执行一些操作并将它们返回到数组中,我该怎么办?通常,我会使用 map 来处理这种行为。但是 map_cons 不存在。

一个例子:

给定一个整数列表,我需要查看哪些整数重复并返回仅包含这些整数的列表

[1, 1, 4, 5, 6, 2, 2] ## I need some function that will get me [1, 2]

我可以说:

[1, 1, 4, 5, 6, 2, 2].each_cons(2) {|e| e[0] if e[0] == e[1]}

但是,由于 each 遍历数组,它将成功完成并在最后返回 nil。我需要它表现得像 map 而不是 each

这种行为是 ruby​​ 支持的吗?我是不是完全从错误的方向来了?

最佳答案

each_cons 的文档以这个无辜的短语结尾:“如果没有给出 block ,则返回一个枚举器。” Enumerable 的大多数方法都是这样做的。您可以使用枚举器做什么? Nothing truly impressive .但是 Enumerators 包括 Enumerable,它确实提供了大量强大的方法,map 就是其中之一。因此,正如 Stefan Pochmann 所做的那样:

[1, 1, 4, 5, 6, 2, 2].each_cons(2).map { |e| e[0] if e[0] == e[1] }

each_cons 在没有 block 的情况下被调用,因此它返回一个 Enumerator。 map只是它的方法之一。

关于arrays - ruby 是否支持可枚举的 map_cons 方法或其等效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47607458/

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