我已经在拉人请求中发现了这段代码,有人对我的某个宝石发了一条代码:
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 Tempfile,然后我决定阅读its documentation以了解更多信息。但我还没有找到#tap
方法。
然后我尝试了File documentation,然后又一次找不到#tap
。
此方法定义在哪里?
它的用途是什么?
提前致谢!
答案 0 :(得分:3)
Object
在def foo
a = []
a.push(3)
a
end
def foo
[].tap do |a|
a.push(3)
end
end
https://ruby-doc.org/core-2.3.1/Object.html#method-i-tap
它是在Ruby 1.9中引入的。它为块产生自我,然后返回self。我认为一个说明性的例子是它用于从方法中返回一个对象。
你可以这样做。
<system.web>
<httpRuntime executionTimeout="240" maxRequestLength="20480" />
</system.web>
在第一个例子中,数组a被显式返回,并且在第二个tap中用于将块生成为self,然后返回self。