在上一篇文章中,我们研究了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块的帮助下修改此方法。