Solidity
在多個映射中引用公共數組
試圖了解區塊鏈中的記憶體,以便將數組的引用共享為多個映射的公共儲存。
假設需要以下關係。所以會有產品不斷創建並添加到產品數組中。我想用 uint256 中的一些鍵創建產品映射,並映射客戶到產品的關係,如下所示。
Product[] Products; mapping(uint256 => Product) ProductsMap; mapping(address => mapping(uint256 => Product) CustomerProductsMap;
因此,假設在 uint256 中創建了具有唯一 ID 的新產品,
uint256 Id = 1; Product memory newProduct = Product({ id: Id, name: "toy", price: 100000 });
我們將它添加到數組中,以便快速獲取外部函式。
Products.push(newProduct);
我們添加了 key-val 對以便快速查找,例如:
ProductsMap[Id] = newProduct;
現在,我想使用相同的實例創建客戶-產品關係。
CustomerProductsMap[customerAddress][Id] = newProduct;
所以這是一個問題,當 newProduct 的值更新為:
ProductsMap[1].price = 200000
無論我使用哪個地圖/數組查找,我是否可以假設該產品的價格現在發生了變化?我希望他們都引用相同的記憶。
不,您已經創建了相同數據的三個副本。
不能為這種情況推荐一些東西,但通常有一個映射 from
ID
toProduct
和 storageID
而不是Product
.