【发布时间】:2020-05-09 19:12:02
【问题描述】:
我正在制作一个吉他浏览 cli 项目。我有两个类别Electric 和Acoustic。
我为这两个类别制作了 2 种方法:mass_create_electrics 和 mass_create_acoustics
@@electrics = []
@@acoustics = []
def self.electrics
@@electrics
end
def self.acoustics
@@acoustics
end
def self.mass_create_electrics(electric_hash)
electric_hash.each do |e_hash|
electric = HiStrung::Guitar.new(e_hash[:name], e_hash[:url])
@@electrics << electric
end
end
def self.mass_create_acoustics(acoustic_hash)
acoustic_hash.each do |a_hash|
acoustic = HiStrung::Guitar.new(a_hash[:name], a_hash[:url])
@@acoustics << acoustic
end
end
如您所见,这两种方法都在做同样的事情,所以我的目标是只制作一种方法来实例化电吉他和原声吉他。这是我应该做的清单。
- 在您的 Guitar 类中创建一个 .mass_create_guitars 方法,该方法接受 2 个参数 (吉他哈希和吉他类别)
- 该方法应该可以用于实例化两个电吉他 和原声吉他
- 第二个参数将确定是否 吉他将添加到您的@@electrics 收藏或@@acoustics 收藏中
- 此方法应同时替换 mass_create_electrics 和 mass_create_acoustics 这样您就不会再有 2 个方法做几乎相同的事情了。
所以这是我到目前为止的方法:
def self.mass_create_guitars(guitar_hash, category)
guitar_hash.each do |g_hash|
guitars = HiStrung::Guitar.new(g_hash[:name], g_hash[:url])
end
end
但我不确定从这里去哪里。
【问题讨论】:
标签: ruby web-scraping methods command-line-interface