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