📅  最后修改于: 2023-12-03 15:19:52.258000             🧑  作者: Mango
self.all
中查找频率在 Ruby 中,我们可以使用 self.all
来获取一个类中的所有实例。有时候,我们可能需要查找某个特定值在该类实例中的出现频率。下面是一些示例代码。
下面的示例代码演示了如何使用 Enumerable#count
方法找到一个数组中某个值的出现次数。
class Person
attr_accessor :name, :age
@@all = []
def initialize(name, age)
@name = name
@age = age
@@all << self
end
def self.all
@@all
end
end
people = [
Person.new("Alice", 30),
Person.new("Bob", 40),
Person.new("Charlie", 50),
Person.new("Alice", 30),
Person.new("Bob", 40)
]
# 找到名字为 "Alice" 的人出现的次数
count = people.count { |person| person.name == "Alice" }
puts count # => 2
在这个示例中,我们定义了一个 Person
类,并在其中实现了一个 self.all
方法,以获取该类的所有实例。然后,我们创建了一个数组 people
,包含了几个 Person
类型的实例。
接着,我们使用 Enumerable#count
方法来计算数组 people
中名字为 "Alice" 的 Person
实例出现的次数。我们可以将一个块传递给 count
方法,并在块中指定我们想要计数的条件。
下面的示例代码演示了如何使用 Enumerable#each_with_object
方法和哈希表来找到一个数组中每个值的出现次数。
class Person
attr_accessor :name, :age
@@all = []
def initialize(name, age)
@name = name
@age = age
@@all << self
end
def self.all
@@all
end
end
people = [
Person.new("Alice", 30),
Person.new("Bob", 40),
Person.new("Charlie", 50),
Person.new("Alice", 30),
Person.new("Bob", 40)
]
# 计算每个名字在数组 people 中的出现次数
count = people.each_with_object(Hash.new(0)) { |person, counts| counts[person.name] += 1 }
puts count # => {"Alice"=>2, "Bob"=>2, "Charlie"=>1}
在这个示例中,我们定义了一个 Person
类,并在其中实现了一个 self.all
方法,以获取该类的所有实例。然后,我们创建了一个数组 people
,包含了几个 Person
类型的实例。
接着,我们使用 Enumerable#each_with_object
方法和一个空哈希表作为初始值,遍历数组 people
中的每个元素。在遍历过程中,我们将每个人的名字作为哈希表的键,并将其出现次数作为哈希表的值。最后,我们打印输出这个计数哈希表。
本文中,我们介绍了在 Ruby 中用数组 self.all
查找某个特定值在实例中的出现频率的两种方法:使用 Enumerable#count
方法和使用 Enumerable#each_with_object
方法和哈希表。这些方法都是 Ruby 中常用的查找或计数方法,能够帮助我们快速地实现各种功能。