如果包含 Pry 调试器语句,函数将返回不同的值

Function Returning Different Values If Pry Debugger Statements Included

我编写的 ruby 函数遇到了一个奇怪的问题,该函数用于从通过解析 JSON 字符串创建的散列中删除不需要的项目。该函数将 return 当我在函数中包含 pry 语句时所期望的,如本 post 底部所示。当我删除 pry 语句时,函数 returns 是别的东西。我不太确定为什么会这样,我想在我尝试找出解决我的问题的替代方案时会在这里问。

下面,slides 是一个由 space 分隔的整数组成的字符串,因此 slides.split(' ') return 是一个整数数组。幻灯片组是经过解析的 JSON 哈希。如果需要,我可以提供一个带有 JSON 散列的文件,但尝试在此处输入它会让人感到沮丧。我认为没有必要查看散列,因为问题似乎出在 pry 及其对函数的影响上。

def selected_slides_and_groups
  selected_slide_ids = slides.split(' ')
  slide_groups = master_presentation.slide_groups

  slide_groups.each do |slide_group|
    delete_slides_from_group(slide_group, selected_slide_ids)
  end
end

def delete_slides_from_group(slide_group, selected_slide_ids)
  binding.pry
  slide_group[:content].delete_if do |item|
    if item[:type] == 'group'
      delete_slides_from_group(item, selected_slide_ids)
    elsif selected_slide_ids.include? item[:id]
      next
    else
      true
    end
  end
  binding.pry
end

Ruby return 中的方法最后计算值(除非另有说明)和 binding.pry 调用 returns nil.