首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将这两种方法组合成一种方法?

如何将这两种方法组合成一种方法?
EN

Stack Overflow用户
提问于 2020-05-09 19:12:02
回答 1查看 28关注 0票数 0

我在做一个吉他浏览项目。我有两个类别:ElectricAcoustic。我为这两个类别创建了两个方法:mass_create_electricsmass_create_acoustics

代码语言:javascript
复制
@@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

正如你所看到的,这两种方法都在做同样的事情,所以我的目标是只制作一个同时实例化电吉他和声吉他的方法。这是我应该做的事情的清单。

在吉他类中创建一个包含两个参数(吉他哈希和吉他类别)的@@acoustics

  • This
  • 方法
  • ,该方法应该能够用于实例化电吉他和吉他
  • ,第二个参数将决定吉他是否添加到@@electrics的集合中,或者您的
  • 方法集合应该同时替换mass_create_electrics和mass_create_acoustics,这样就不会再有两个方法做几乎相同的事情了。

到目前为止,我有这样的方法:

代码语言:javascript
复制
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

但我不知道从这里往哪里走。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-09 19:27:15

这两种方法的两个不同之处是:

  • 吉他从
  • 中取出的散列,吉他被推送到

的数组

所以,这两件事应该是参数。哈希已经是一个参数,所以您所需要做的就是添加数组作为第二个参数:

代码语言:javascript
复制
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_hashacoustic_hash是奇怪的名字,因为它们显然不是散列,它们看起来更像数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61702311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档