我正在开发一个开源项目的功能。 在某些时候导入CSV文件,我从中创建一个数组,以便在新对象中传递它。 之后
@property
这用于获取代码块
class ProductSearch(BaseModel):
# ....
@property
def product_favorite_set(self):
return Favorite.objects.filter(product=self.product)
我的问题是,如何访问导入的数据?
在CSV.open(path, 'rb', opts)
之后有一个方法序列。
编辑: 我不想重写它我想测试它。我知道我应该使用tap来修改数据,但我不知道该怎么做,因为我没有看到任何方法来引用CSV的数据
答案 0 :(得分:1)
此时与文件操作实际上没有任何关系。它更多的是了解#tap
如何阻止工作。
def block
[1, 2, 3, 4, 5].tap { |array| yield array if block_given?}
end
block { |array| array.each{ |element| puts element } }
输出:
1
2
3
4
5
在方法block
中,数组[1, 2, 3, 4, 5]
被初始化,之后我们tap
进入该数组,这使得该数组在tap
的块中可用。
在上面的示例中,当[1, 2, 3, 4, 5]
传递给tap
时,它在array
变量中可用,其变量如下所示:|array|
。然后,array
将获得块if block_given?
。这意味着新块|array|
中也包含[1, 2, 3, 4, 5]
。因此,在传递给tap
的新块中,您可以修改该数组,或者像我一样输出它。