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