📜  红宝石 |数组收集!()操作(1)

📅  最后修改于: 2023-12-03 15:27:30.758000             🧑  作者: Mango

红宝石 | 数组收集!()操作

在 Ruby 中,数组是一种常见的数据类型,其内部实现使用了动态数组或链表结构。Ruby 提供了丰富的数组操作方法,其中包括了 collect 方法。

什么是 collect 方法?

collect 方法是 Ruby 数组中的一种迭代方法,其作用是在数组中迭代元素并应用给定的块,然后将块的返回值作为新的数组元素,最终返回一个新的、应用了块处理的数组。

以下是一个简单的例子:

a = [1, 2, 3, 4, 5]
b = a.collect {|x| x + 1}
puts b.inspect #=> [2, 3, 4, 5, 6]

在这个例子中,我们创建了一个数组 a,然后使用 collect 方法在 a 中迭代每个元素,并应用块 {|x| x + 1},该块将每个元素加一。最后,我们将新的数组 b 输出到控制台。

支持数组的 collect 方法

collect 方法不仅支持 Ruby 中的 Array 类型,还支持其他实现了 Enumerable 模块的集合类型,如 Range、Hash 和 Set。

以下是一个使用 Range 类型的例子:

r = (1..5)
s = r.collect {|x| x * x}
puts s.inspect #=> [1, 4, 9, 16, 25]

在这个例子中,我们创建了一个 Range 对象 r,然后使用 collect 方法在 r 中迭代每个元素,并应用块 {|x| x * x},该块将每个元素平方。最后,我们将新的数组 s 输出到控制台。

collect 方法的返回值

使用 collect 方法处理数组时,它将返回一个新的数组,该数组包含了应用了块处理后的所有元素。

以下是一个简单的例子:

a = [1, 2, 3, 4, 5]
b = a.collect {|x| x * 2}
puts b.inspect #=> [2, 4, 6, 8, 10]

在这个例子中,我们将原数组 a 中的每个元素乘以 2,并且将结果存入一个新的数组 b 中,最后输出 b

collect! 方法

除了 collect 方法之外,Ruby 还提供了一个原地版本的 collect! 方法,它将修改原数组而不是返回一个新数组。使用 collect! 方法时,生成的结果将替换原来的数组。

以下是一个简单的例子:

a = [1, 2, 3, 4, 5]
a.collect! {|x| x * 3}
puts a.inspect #=> [3, 6, 9, 12, 15]

在这个例子中,我们将原数组 a 中的每个元素乘以 3,并将结果用于替换原来的数组。

总结

collect 方法是 Ruby 数组中的一种迭代方法,可应用于所有实现了 Enumerable 模块的集合类型。使用 collect 方法时,它将返回一个新的数组,而使用 collect! 方法时,它将替换原数组。