Solidity中无法创建指定输入大小的数组问题求助
Solidity动态数组创建问题解决
问题原因
你写的uint[quant]是固定大小数组的声明方式,Solidity要求固定大小数组的长度必须是编译期常量,而quant是函数接收的运行时输入变量,所以触发类型错误。
解决方法
要创建长度由运行时变量决定的数组,需要用动态数组的创建语法,使用new关键字指定长度:
p.quant_clicks = new uint[](quant);
这段代码会创建一个长度为quant的动态uint数组,所有元素默认初始化为0,刚好满足你存储每件商品点击次数的需求。
修改后代码示例
struct Product { uint PId; string PName; string Brand; uint[] quant_clicks; // 该数组用于存储每件商品的点击次数,其长度应为输入的数量 SCSection[] SChain; } // 示例函数:创建商品并初始化对应长度的点击次数数组 function createProduct(uint quant, uint pid, string memory pname, string memory brand) public { Product memory p; p.PId = pid; p.PName = pname; p.Brand = brand; p.quant_clicks = new uint[](quant); // 正确创建对应大小的动态数组 // 后续业务逻辑... }
内容的提问来源于stack exchange,提问作者Anushka.N12
相关产品推荐
相关产品推荐

