Ruby中带有示例的Array.sort方法

Array.sort方法

在本文中,我们将研究Array.sort方法。你们都必须认为该方法必须执行与Array实例中的元素或对象的排序有关的操作。它并不像看起来那么简单。好吧,我们将在其余内容中解决这个问题。我们将尝试借助语法并演示程序代码来理解它。

方法说明:

该方法是一个公共实例方法,为Ruby库中的Array类定义。此方法的工作方式是,在对使用该方法调用的Array进行排序后,它返回一个新的Array。如果调用的方法没有块,则排序将以升序进行。如果希望以降序进行排序,则应该在调用该方法时将一个块与该方法一起传递。此方法不会对self Array中对象的实际排列产生任何影响,因为此方法属于非破坏性方法的类别,在该类别中,该方法创建的更改是临时的或非永久的。

语法:

    array_instance.sort -> new_array
    or
    array_instance.sort{|a,b| block}-> new_array

Argument(s) 需要:

此方法不带任何参数。相反,如果您想以其他方式排序,则必须传递一个块。

范例1:

=begin
  Ruby program to demonstrate sort method
=end

# 数组声明
table = ["Subha","Sham","Raat","Vivek","Me","Amisha","Zain","Harsh","Bajwa"]

puts "Array sort implementation"
new_arr = table.sort
puts "Array after sorting: #{new_arr}"
puts "Original Array instance: #{table}"

输出结果

Array sort implementation
Array after sorting: ["Amisha", "Bajwa", "Harsh", "Me", "Raat", "Sham", "Subha", "Vivek", "Zain"]
Original Array instance: ["Subha", "Sham", "Raat", "Vivek", "Me", "Amisha", "Zain", "Harsh", "Bajwa"]

说明:

在上面的代码中,您可以观察到我们正在使用Array.sort方法对Array实例进行排序。从方法返回的Array实例按升序排列。此方法不会对原始Array实例产生任何影响,因为该方法是非破坏性方法的示例之一。

范例2:

=begin
  Ruby program to demonstrate sort method
=end

# 数组声明
table = ["Subha","Sham","Raat","Vivek","Me","Amisha","Zain","Harsh","Bajwa"]

puts "Array sort implementation"
new_arr = table.sort{|a,b| b<=>a}

puts "Array after sorting: #{new_arr}"
puts "Original Array instance: #{table}"

输出结果

Array sort implementation
Array after sorting: ["Zain", "Vivek", "Subha", "Sham", "Raat", "Me", "Harsh", "Bajwa", "Amisha"]
Original Array instance: ["Subha", "Sham", "Raat", "Vivek", "Me", "Amisha", "Zain", "Harsh", "Bajwa"]

说明:

在上面的代码中,您可以观察到我们也可以进行降序排序。这可以在block和<=>运算符的帮助下完成。<=>运算符将在a小于b时返回-1,在a大于b时返回+1,在a和b相等时返回0。此方法不会对原始Array实例产生任何影响,因为该方法是非破坏性方法的示例之一。