📜  红宝石 |数组排序()函数(1)

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

红宝石 | 数组排序() 函数

在 Ruby 中,数组排序() 函数用于对数组进行排序。该函数可接受一个可选的块,并根据指定的规则对数组中的元素进行排序。

语法

以下是 数组排序() 函数的基本语法:

array.sort { |a, b| block }

其中:

  • array:需要进行排序的数组。
  • block:可选的块,用于指定对数组中每个元素的排序规则。
示例

以下示例演示了如何使用 数组排序() 函数对 Ruby 数组进行排序:

# 定义需要排序的数组
fruits = ['banana', 'apple', 'pear', 'orange']

# 使用数组排序() 函数对数组进行排序
fruits_sorted = fruits.sort

# 输出排序后的数组
puts fruits_sorted # ["apple", "banana", "orange", "pear"]

以上示例未指定排序规则,因此将默认使用 Ruby 内置的 <=> 运算符对元素进行排序。

排序规则

如果需要自定义排序规则,可以通过指定块来实现。块应该具有以下形式:

{ |a, b| block }

其中,

  • a:第一个元素。
  • b:第二个元素。
  • block:块中的代码可用于指定排序规则。

下面的示例演示了如何使用块对数组中的元素进行排序:

# 定义需要排序的数组 (这里使用类对象元素的属性来排序)
class Person
  attr_accessor :name, :age
  
  def initialize(name, age)
    @name = name
    @age = age
  end
end

people = [Person.new("John", 25), Person.new("Mary", 20), Person.new("Bob", 30)]

# 使用块对数组进行排序,按照年龄从小到大排序
people_sorted = people.sort { |a, b| a.age <=> b.age }

# 输出排序后的数组
puts people_sorted.map { |person| person.name } # ["Mary", "John", "Bob"]

以上示例使用了 Person 类中的 age 属性作为排序规则,按照年龄从小到大进行排序。

返回值

数组排序() 函数不会更改原始数组,而是返回一个新的已排序的数组。

总结

数组排序() 函数是 Ruby 中非常强大且灵活的一个函数,可以根据指定的规则对数组进行排序。通过指定块,还可以实现自定义的排序规则。在实际的开发中,经常会用到该函数。