Array.map和Array.map!Ruby中带有示例的方法

Ruby Array.map和Array.map!方法

在上一篇文章中,我们研究了Array.reverse_each方法。此方法用于以相反的顺序打印Array,而不会更改Array实例中存储的元素的值。Array.each也以相同的方式和一种非破坏性方法工作。但是我们需要一种方法,可以对Element值进行一些更改,也可以对Array中存在的值进行一些更改。

Array.map方法就是为此目的而设计的。它用于在当前数组的帮助下生成一个新数组,并在块中提供一些更改。Array.map是一种非破坏性的方法,仅表示它不会影响实际的Array,而如果您也想在实际的Array中进行更改,则可以引入Array.map!代码中的方法

语法:

    Array.map { |var| #statements}
    
    # 要么
    
    Array.map! { |var| #statements}
    
    # 要么
    
    Array.map do |var| 
        #statements
    end
    
    # 要么
    
    Array.map! do |var| 
        #statements
    end

Parameter(s):

此方法不使用任何类型或任何数量的参数。

范例1:

=begin
  Ruby program to demonstrate Array.map
=end

# 数组声明
Adc = ['Ruby','Nhooo.com','Ruby','C++','C#','Java','Python','C++','Java']

puts Adc.map {|ele|
	ele = ele + " is a language"
}

puts "Actual elements are:"
print Adc

输出结果

Ruby is a language
Nhooo.com is a language
Ruby is a language
C++ is a language
C# 是一种语言
Java is a language
Python is a language
C++ is a language
Java is a language
Actual elements are:
["Ruby", "Nhooo.com", "Ruby", "C++", "C#", "Java", "Python", "C++", "Java"]

说明:

在上面的代码中,您可以观察到Array.map并未对实际Array元素值进行任何更改。我们将字符串“是一种语言”与数组中存在的每个元素连接在一起。上面的代码也可以借助doend块进行修改。当我们打印数组时,我们得到的是元素的实际值。

范例2:

=begin
Ruby program to demonstrate Array.map!
=end

# 数组声明
Adc = ['Ruby','Nhooo.com','Ruby','C++','C#','Java','Python','C++','Java']

cnt = 1
puts Adc.map! {|ele|
	ele = ele + " is a language"
}

puts "Actual elements are:"
puts Adc

输出结果

Ruby is a language
Nhooo.com is a language
Ruby is a language
C++ is a language
C# 是一种语言
Java is a language
Python is a language
C++ is a language
Java is a language
Actual elements are:
Ruby is a language
Nhooo.com is a language
Ruby is a language
C++ is a language
C# 是一种语言
Java is a language
Python is a language
C++ is a language
Java is a language

说明:

在上面的代码中,您可以观察到Array.map!给实际的Array元素带来了变化。当您要更新数组中存在的元素的实际值时,这是一种非常有效的方法。与Array.map类似,也可以在do-end块的帮助下修改此方法。