【问题标题】:Run parallel loops in Ruby在 Ruby 中运行并行循环
【发布时间】:2019-04-03 01:27:58
【问题描述】:

我有两组数组存储在一个文件中,我需要一个一个地提取值并比较它们。我正在使用此代码,但看起来我做得正确。

# First Dataset
File.foreach(file_set_a) do |data_a|

  data_array_a = data_a.split("\t")
  @file_name_a = data_array_a[0]
  @file_ext_a = data_array_a[1]

  # Second Dataset
  File.foreach(file_set_b) do |data_b|

    data_array_b = data_b.split("\t")
    @file_name_b = data_array_b[0]
    @file_ext_b = data_array_b[1]

    #Compare
    @file_name_a == @file_name_b 
  end
end

问题是,当我进入集合 B 时,我无法返回并提取集合 A 中的下一个值。有什么建议吗?

【问题讨论】:

  • 目前还不清楚您要在这里做什么。也许给出一个输入数据的样本,以及在“比较”它们之后你最终想要做什么。可能有更好的方法来做到这一点。

标签: arrays ruby loops


【解决方案1】:

首先,将这两个文件转换成两个独立的数据数组

lines_array_a = File.readlines(file_set_a)
lines_array_b = File.readlines(file_set_b)

我假设两个数组大小相同。现在运行一个循环并从两个数组中获取项目以进行比较。

for i in 0..(lines_array_a.count - 1) do
  data_array_a = lines_array_a[i].split("\t")
  @file_name_a = data_array_a[0]
  @file_ext_a = data_array_a[1]

  data_array_b = lines_array_b[i].split("\t")
  @file_name_b = data_array_b[0]
  @file_ext_b = data_array_b[1]

  @file_name_a == @file_name_b
end

【讨论】:

  • 您的解决方案假定行是同步的。原始问题扫描每个file_a 行的第二个文件以在@​​987654324@ 中查找匹配行。
  • @KimmoLehto 我在这里试图说明的一点是首先从这些文件创建数据数组,然后使用这些数据数组。问题的原因我无法返回并提取下一个值 - 是因为他使用了嵌套循环,我试图在我的方法中避免这种情况。 TIA。
  • 它可以为集合A中的每个项目扫描集合B的内存数据以找到匹配的对。
猜你喜欢
  • 1970-01-01
  • 2016-11-14
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多