📜  红宝石 |数组映射!()操作(1)

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

红宝石 | 数组映射!()操作

在 Ruby 语言中,经常需要对数组中的每一个元素都进行一些操作,例如对每个数字乘以 2、对每个字符串转换为大写、对每个布尔类型值取反等等。这时,数组映射操作就显得非常方便和实用。

什么是数组映射

数组映射指的是将数组中的每个元素按照某个规则进行转换,并返回一个新的数组。这个规则可以是一个函数或代码块,在 Ruby 中,代码块常被用来实现数组映射。

数组映射的基本语法

在 Ruby 中,使用 Array#map 方法进行数组映射,其基本语法如下:

new_array = old_array.map { |element| block }

其中,old_array 表示原始数组,new_array 表示映射后生成的新数组,block 即为代码块,对于原始数组中的每一个元素都会执行一次该代码块,其中 element 则代表数组中的元素。

举例演示
对数字数组每个元素乘以 2
numbers = [1, 2, 3, 4, 5]
new_numbers = numbers.map { |n| n * 2 }
puts new_numbers #=> [2, 4, 6, 8, 10]
对字符串数组每个元素转换为大写
words = ['hello', 'world', 'ruby']
new_words = words.map { |word| word.upcase }
puts new_words #=> ['HELLO', 'WORLD', 'RUBY']
对对象数组执行某个方法
class Person
  attr_accessor :name, :age
  
  def initialize(name, age)
    @name = name
    @age = age
  end
  
  def greeting
    "Hi, I'm #{name} and I'm #{age} years old."
  end
end

people = [
  Person.new('Alice', 20),
  Person.new('Bob', 25),
  Person.new('Charlie', 30)
]

greetings = people.map(&:greeting)
puts greetings #=> ["Hi, I'm Alice and I'm 20 years old.", "Hi, I'm Bob and I'm 25 years old.", "Hi, I'm Charlie and I'm 30 years old."]
小结

数组映射是 Ruby 中非常实用的功能,可以大大简化对数组操作的代码,同时也使得代码更加容易理解和维护。在实际开发中,我们应该灵活运用数组映射,以提高开发效率和代码可读性。