You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 00:10:55