Ruby:根据多个关键字搜索数组

Ruby: Searching an array based off of multiple keywords

通过实例数组搜索多个关键字的最佳方式(不是那么重要,但这是我的特定情况)

all = [@sport = "string", @description = "string", @time = "string", 
@matchup = "string"]

这些实例中的字符串是从电视节目表中抓取的信息。目前,我正在使用 "include?" 并且我的应用程序运行良好,但我觉得它可以重构为更清洁和更高效。

这是我当前的设置:

def self.select_by(sport)
    all.select {|object| object.sport.include?(sport) || 
    object.description.include?(sport) || object.matchup.include?(sport) || 
    object.time.include?(sport) }
end

我有 10 个 class 方法可以插入到 select_by 方法中。下面是一个例子。

def self.football
    select_by("Football")
end

你明白了:D

我将每个 self.insert_sport 设置为我的 CLI 中的一个变量,并将该变量插入另一个方法以根据数组中的实例(运动、描述、比赛、时间)显示正确的细分。

我只是想知道有没有一种方法可以添加更多关键字,而不会过多地破坏我的功能。就目前而言,它工作得相当好,因为时间表是可预测的并且关键字是一致的,但由于我是编程新手,我想确保养成覆盖我所有基础的习惯。

我会稍微重构 select_by 方法:

ATTRIBUTES = %i[sport description matchup time]

def self.select_by(sport)
  all.select do |object|
    ATTRIBUTES.any? { |attr| object.public_send(attr).include?(sport) }
  end
end 

添加更多属性就像将属性名称添加到常量一样简单。