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
添加更多属性就像将属性名称添加到常量一样简单。
通过实例数组搜索多个关键字的最佳方式(不是那么重要,但这是我的特定情况)
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
添加更多属性就像将属性名称添加到常量一样简单。