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

Solidity函数返回类型string[] memory为何无法返回固定长度string[5]数组

类型不兼容的原因

Solidity语言中,固定长度数组和动态长度数组属于完全独立的两种类型,二者不存在默认隐式转换规则。
你代码中直接使用的数组字面量["DocumentTemplate", "Definition", "RepAndWarranty", "Restriction", "Entitlement"],会被编译器默认推导为固定长度数组类型string[5] memory,和你函数声明的返回值类型string[] memory(动态长度字符串数组)不匹配,因此触发类型转换报错。

可行解决方法

你可以手动初始化对应长度的动态数组,再逐个赋值元素即可,修改后的代码如下:

function BindingTypeList() public pure returns(string[] memory) {
    // 显式初始化长度为5的动态字符串数组
    string[] memory result = new string[](5);
    result[0] = "DocumentTemplate";
    result[1] = "Definition";
    result[2] = "RepAndWarranty";
    result[3] = "Restriction";
    result[4] = "Entitlement";
    return result;
}

上述代码完全符合Solidity类型规则,可以正常编译运行。

内容的提问来源于stack exchange,提问作者GGizmos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:09:03