Ruby:搜索基于多个关键字的数组



通过一系列实例搜索多个关键字的最佳方法(不像那样重要,但这是我的某些情况(

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

这些实例中的字符串从电视时间表中删除了信息。目前,我正在使用"包括?"而且我的应用程序正常工作,但是我觉得它可以重构以更干净,更高效。

这是我当前的设置:

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种插入select_by方法的类方法。一个示例在下面。

def self.football
    select_by("Football")
end

您得到图片:D

我将每个self.insert_sport设置为我的CLI中的一个变量,然后将变量插入另一种方法中,以显示数组中实例的正确分解(sport,sport,description,description,ackatup,time(。

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

我会稍微重构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 

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

最新更新