Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Tempfile#tap:什么类定义了这个方法以及它的用途?_Ruby_Temporary Files_Httparty - Fatal编程技术网

Ruby Tempfile#tap:什么类定义了这个方法以及它的用途?

Ruby Tempfile#tap:什么类定义了这个方法以及它的用途?,ruby,temporary-files,httparty,Ruby,Temporary Files,Httparty,我在某人向我的一个宝石发出的拉取请求中发现了这段代码: source = HTTParty.get(PoliticosBR::DEPUTADOS_URL) tempfile = Tempfile.new('deputados.xls').tap do |f| f.write(source.to_s.force_encoding('UTF-8')) end 其想法是使用HTTParty获取远程Excel文件,然后将其写入Tempfile以读取其数据。没什么特别的,而且很好用 但我不太习惯Ru

我在某人向我的一个宝石发出的拉取请求中发现了这段代码:

source = HTTParty.get(PoliticosBR::DEPUTADOS_URL)
tempfile = Tempfile.new('deputados.xls').tap do |f|
  f.write(source.to_s.force_encoding('UTF-8'))
end
其想法是使用HTTParty获取远程Excel文件,然后将其写入Tempfile以读取其数据。没什么特别的,而且很好用

但我不太习惯Ruby临时文件,于是我决定阅读以了解更多。但是我没有在那里找到
#tap
方法

然后我试了一下,但还是找不到关于
#点击

此方法在哪里定义?

这是干什么用的?

提前谢谢

#点击
是在
对象上定义的

它是在Ruby 1.9中引入的。它将self让给块,然后返回self。我认为一个示例是当它用于从方法返回对象时

你可以这样做

def foo
  a = []
  a.push(3)
  a
end

def foo
  [].tap do |a|
    a.push(3)
  end
end

在第一个示例中,数组a显式返回,在第二个tap中,用于将块生成到self,然后返回self。

谢谢!但我仍然不明白这是如何应用于我问题中的特定代码段的。我明白了!它只是将创建的临时文件“发送”到块中,以便在内部使用它。