Solidity:在公共方法中返回数组

2024-03-07

我正在尝试创建一个返回数组的公共函数, 这是错误

返回参数类型映射(uint256 => struct ItemList.Item storage ref) 不能隐式转换为预期类型(第一个的类型 返回变量)uint256[]内存。

pragma solidity ^0.5.0;
contract ItemList {
    uint public itemCount = 0;
    mapping(uint256 => Item) public items;

    event ItemCreated (
        uint id,
        string proofdocument
    );

    struct Item {
        uint id;
        string proofdocument;
    }

    constructor() public {
    }

    function createItem(string memory _proofdocument) public {
        itemCount++;
        items[itemCount] = Item(itemCount, _proofdocument);
        emit ItemCreated(itemCount, _proofdocument);
    }

    function getItems() public pure returns(uint256[] memory ) {
        return items; <----------ERROR
    }
}

谢谢安德里亚


您可以通过以下方式获取循环中的每个项目web3.js library

const array = []
for (let i = 0; i < itemCount; itemCount += 1) {
    array.push(contract.getItem(i)) // where getItem do items[I] in solidity
}

或者你可以使用pragma experimental版本:

pragma solidity ^0.5.0;
pragma experimental ABIEncoderV2;

contract ItemList {
    uint public itemCount = 0;

    struct Item {
        uint id;
        string proofdocument;
    }
    Item[] items;

    constructor() public {}

    function createItem(string memory _proofdocument) public {
        itemCount++;
        items.push(Item(itemCount, _proofdocument));
    }

    function getItems() external view returns(Item[] memory) {
        return items;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Solidity:在公共方法中返回数组 的相关文章

  • Solidity 基础(一)

    Solidity 官网 github Solidity是一种静态类型的花括号 curly braces 编程语言 旨在开发运行在以太坊 Ethereum 上的智能合约 Solidity正在迅速发展 作为一门相对年轻的语言 Solidity正
  • Solidity 从入门到实战(一)

    solidity 从入门到实战 一 注意 本专栏主要来自于https www bilibili com video BV1St411a7Pk p 11 spm id from pageDriver的学习笔记 编写第一个案例 声明版本号 pr
  • 【Solidity】Storage和memory关键字的区别和用法

    在 Solidity 中 有两个地方可以存储变量 storage以及memory Storage 变量是指永久存储在区块链中的变量 Memory 变量则是临时的 当外部函数对某合约调用完成时 内存型变量即被移除 状态变量 在函数之外声明的变
  • 区块链:Solidity值类型(Solidity 枚举Enums & 结构体Structs)

    枚举Enums 案例 pragma solidity 0 4 4 contract test enum ActionChoices GoLeft GoRight GoStraight SitStill ActionChoices choic
  • Solidity学习笔记2——Webase积分合约

    代码段学习笔记 代码来源 Webase合约仓库 我只做了增加注释的工作用来记录相关知识点 pragma solidity 0 4 24 import SafeMath sol import Roles sol import Address
  • solidity通用模式访问限制

    通用模式 访问限制 访问限制是智能合约的一种通用模式 但你不能限制任何人获取你的智能合约和交易的状态 当然 你可以通过加密来增加读取难度 但是如果你的智能合约需要读取该数据 指加密的数据 其他人也可以读取 你可以通过将合约状态设置为私有来限
  • Remix 以太坊Solidity IDE搭建与初步使用

    以太坊 因为以太坊为开源社区 虽然东西很优秀 但是组件十分的杂乱 因此首先简单介绍下以太坊的一些常用组件 1 Geth Geth是由以太坊基金会提供的官方客户端软件 用Go编程语言编写的 2 Parity Parity 是对以太坊协议的另一
  • 玩以太坊链上项目的必备技能(类型-引用类型-Solidity之旅三)

    在前文我们讲述了值类型 也就说再修改值类型的时候 每次都有一个独立的副本 如 string 类型的状态变量 其值是无法修改 而是拷贝出一份该状态的变量 将新值存起来 对于处理稍微复杂地值类型时 拷贝将变得愈发大了 也正是介于此 才考虑到将数
  • 区块链开发之Solidity编程基础(一)

    Solidy是当前编写智能合约的主流语言 概要 sol文件结构 编译开发 引入其他文件 注释 代码注释 文档注释 合约 状态变量 类型 值类型 1 布尔类型 2 整型 3 地址 4 定长字节数组 5 有理数和整型字面量 6 枚举类型 7 函
  • 安全保护策略:iOS应用程序代码保护的关键步骤和技巧

    转载 怎么保护苹果手机移动应用程序ios ipa文件中的代码 目录 转载 怎么保护苹果手机移动应用程序ios ipa文件中的代码 代码混淆步骤 1 选择要混淆保护的ipa文件 2 选择要混淆的类名称 3 选择要混淆保护的函数 方法 4 配置
  • solidity经典案例----智能小游戏

    参考于https ke qq com webcourse 2379017 103111126 taid 10365401060101385 vid 5285890802017890711 1 案例功能介绍 平台方部署智能合约 用户选择下大或
  • Solidity:如何将 bytes32 表示为字符串

    这在其他语言中可能很简单 但我不知道如何在 Solidity 中做到这一点 我有一个bytes32像这样0x05416460deb76d57af601be17e777b93592d8d4d4a4096c57876a91c84f4a712 I
  • 更改对象上的修改子句错误

    我怎样才能 用达夫尼语 陈述 ensures 保证方法返回的对象将是 新的 即不会与其他地方使用的对象相同 尚未 以下代码显示了一个最小的示例 method newArray a array
  • Solidity 中的动态数组

    我想声明一个简单的数组 动态列表 一个set函数推入一个字符串和一个get函数返回动态数组中保存的所有字符串 我搜索了很多但找不到这个简单的东西 这是我的解决方案 你需要experimental ABIEncoderV2返回字符串数组 pr
  • 如何使用 solc 0.5 编译 Solidity

    编译 js const path require path const solc require solc const fs require fs extra const buildPath path resolve dirname bui
  • 如何在 Python 和 web3.py 中获取 Solidity 恢复/需要错误原因

    我正在努力抓住要求 交易恢复时出错 但我得到了交易的哈希值 我正在使用web3 py def addParticipants request web3 Web3 HTTPProvider settings Blockchain IP add
  • Solidity 中的状态变量是什么?

    我读过一些关于storage memory and view pure 但我并不完全理解它们 我有以下代码 contract struct Random uint32 state uint8 i function main pure int
  • 如何删除solidity中的数组项

    我正在尝试删除 Solidity 数组中的某个项目 我正在探索一些文章 https ethereum stackexchange com questions 1527 how to delete an element at a certai
  • 通过python3计算uniswap 3.0池(对)地址

    我遇到了一个关于如何计算的问题 新的 uniswap 版本 3 池 早期版本称为pair 地址基于1 https github com Uniswap v3 sdk blob aeb1b09 src utils computePoolAdd
  • RuntimeError:使用 docker 关闭连接后无法重用套接字

    我正在关注本教程 https github com getamis eth indexer blob master README md fbclid IwAR3g3SAjJ9ik hHCFkol2k8YXo0GvBL15oSNC hIU38

随机推荐