我正在制作吉他浏览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
如您所见,这两种方法都在做相同的事情,所以我的目标是仅制作一种实例化电吉他和原声吉他的方法。这是我应该做的清单。
所以这是我到目前为止的方法:
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
但是我不确定从这里去哪里。
两种方法之间的两个区别是:
因此,这两件事应该是参数。哈希已经是一个参数,因此您所需要做的就是将数组添加为第二个参数:
def self.mass_create_guitars(guitar_hash, guitar_array)
guitar_hash.each do |guitar|
guitar_array << HiStrung::Guitar.new(guitar_hash[:name], guitar_hash[:url])
end
end
def self.mass_create_electrics(electric_hash)
mass_create_guitars(electric_hash, electrics)
end
def self.mass_create_acoustics(acoustic_hash)
mass_create_guitars(acoustic_hash, acoustics)
end
顺便说一下,electric_hash
和acoustic_hash
是奇怪的名字,因为它们显然不是哈希,它们看起来更像是数组。