正在审核的一些代码使用了以下模式:
def some_method
{}.tap do |data|
data[:foo] = something
data[:bar] = something_else
end
end
我会写这个:
def some_method
{
foo: something,
bar: something_else
}
end
此处使用tap
是否存在技术原因,例如性能,内存,......?
我只能想到两个原因:
答案 0 :(得分:3)
使用tap
,您可以使用条件(或更复杂的逻辑):
def some_method
{}.tap do |data|
data[:foo] = something if condition
data[:bar] = something_else unless condition
end
end
但即使在这种情况下,我也可能会避免tap
并写下:
def some_method
data = {}
data[:foo] = something if condition
data[:bar] = something_else unless condition
data
end