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

时间:2018-10-10 17:18:03

标签: ruby-on-rails ruby-on-rails-5 pry-rails

我编写的ruby函数遇到一个奇怪的问题,该函数用于从通过解析JSON字符串创建的哈希中删除不需要的项目。如本文底部所示,当函数中包含pry语句时,该函数将返回期望的结果。当我删除pry语句时,该函数返回其他内容。我不太确定为什么会这样,并想了一下在尝试找出解决问题的另一种方法时我会问这里。

下面,slides是由空格分隔的整数组成的字符串,这样slides.split('')返回一个整数数组。幻灯片组是解析的JSON哈希。如果需要,我可以提供一个带有JSON哈希值的文件,但是尝试在此处输入它变得令人沮丧。我认为没有必要看到哈希,因为问题似乎在于撬和它对函数的影响。

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

1 个答案:

答案 0 :(得分:1)

Ruby中的方法返回最后一个求值(除非另行指定),并且page.on('request', interceptedRequest => { const resType = async interceptedRequest.resourceType(); if (resType === 'image') { // download the image yourself const body = await Promise.race([ fetchResourceYourself(interceptedRequest.url()), // might need to take care of cookies, headers, ... new Promise(resolve => setTimeout(resolve, 5 * 1000)) // your timeout ]); if (body) { interceptedRequest.respond({ body }); } else { interceptedRequest.abort(); } } else { interceptedRequest.continue(); } }); 调用返回binding.pry