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

从Solidity函数返回string遇类型错误求助(Remix IDE)

问题解决方法

首先看你的代码,核心错误是变量名不匹配:
你定义的mapping是tokenToURI,但函数里返回的却是typeToToken——这个typeToToken应该是你代码里另一个类型为uint256 => uint256[]的mapping,所以返回的类型和函数声明的string memory完全不匹配,才会报类型转换错误。

另外你尝试在mapping里加memory是错误的,Solidity里mapping的存储类型是固定的,值类型前不能加memory修饰符。当你从mapping里读取string类型的值返回时,Solidity会自动把storage里的字符串拷贝到memory中,符合函数返回值的要求。

修正后的代码如下:

// 如果你实际想用的mapping是typeToURI,先修正定义
mapping(uint256 => string) typeToURI;

function tokenTypeURI(uint256 tokenType) public returns (string memory) {
    // 返回对应mapping的正确变量名
    return typeToURI[tokenType];
}

或者如果你原来的mapping确实叫tokenToURI,那函数里就返回这个变量:

mapping(uint256 => string) tokenToURI;

function tokenTypeURI(uint256 tokenType) public returns (string memory) {
    return tokenToURI[tokenType];
}

总结一下:

  • 先检查变量名是否一致,这是导致类型错误的根本原因
  • 不需要在mapping定义里加memory,返回string时Solidity会自动处理存储类型转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:24:44