通过在ruby中的方法中循环它来返回每个项目

时间:2014-12-08 12:09:49

标签: ruby

我有一个调用另一个方法的方法,该方法循环每个项目并将单个对象返回给第一个方法。我不知道如何通过在第二个方法中循环它来返回每个项目。我的伪代码如下。

def process_episodes
  items << get_each_episodes_details(episode_doc)
end

def get_each_episodes_details(epi_doc)
  base_data = "Some common data related to the episodes"
  episodes = get_array_of_episodes_info_from_episode_doc(epi_doc) 
  #Finally return each episode details with base data
  episodes.each do |episode|
    return base_data + episode
  end
end 

我假设return base_data + episode会在迭代后返回每集。

  

但它只返回一个项目并从方法块退出。怎么样   我可以返回多个项目,以便如果剧集数组为10项,   然后我需要返回每个项目,以便items数组包含10   个人剧集相关信息。

1 个答案:

答案 0 :(得分:0)

您的代码将始终返回第一个重复的剧集,并且一旦您进入循环,就永远不会进入下一集。

您需要对代码进行一些改进。

首先,您必须从第二个函数返回一个数组。

喜欢这个

 def get_each_episodes_details(epi_doc)
   base_data = "Some common data related to the episodes"
   episodes = get_array_of_episodes_info_from_episode_doc(epi_doc) 
   #Finally return each episode details with base data
   episodes.map{|episode| base_data + episode} # this will return an array => [obj1,obj2, obj3...]
 end

现在,您的items将是数组=> [[obj1,obj2..], [x1,x2..]]

的数组

然后,您可以致电flatten上的items将其展平,这样您就无法获得数组。 items.flatten

希望有帮助:)