IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 【区块链】solidity 合约函数返回strcut(结构)或结构数组 -> 正文阅读

[区块链]【区块链】solidity 合约函数返回strcut(结构)或结构数组

前言

在solidity 0.4 时代,是不支持返回struct的。但现在solidity已经进入了0.8的版本,这个版本是支持直接返回struct与struct array的,以下为具体做法。

代码示例

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 <0.9.0;

contract ContractFactory {
    
    struct User {
        uint256 id;
        uint256 age;
        string name;
    }
    
    mapping(uint256 => User) public users;
    
    mapping(uint256 => User[]) public userGroup;
    
    function init() public {
        User memory newUser1 = User({
            id: 1,
            age: 24,
            name: "lily"
        });
        User memory newUser2 = User({
            id: 2,
            age: 25,
            name: "brain"
        });
        userGroup[1].push(newUser1);  
        userGroup[1].push(newUser2);      
        
        User storage newUser = users[1];
        newUser.age = 16;
        newUser.name = "amber";
        userGroup[1].push(newUser);
    }
    
    function getStruct() public view returns (User memory) {
        User memory user = users[1];
        return user;
    }
    
    function getStructArray() public view returns (User[] memory) {       
        User[] memory group = userGroup[1];
        return group;
    }
    
    function getStructArrayLength() public view returns(uint256) {
        return userGroup[1].length;
    }
}

web3调用结果

getStruct() ::  [ '0', '16', 'amber', id: '0', age: '16', name: 'amber' ]
getStructArray() ::  [
  [ '1', '24', 'lily', id: '1', age: '24', name: 'lily' ],
  [ '2', '25', 'brain', id: '2', age: '25', name: 'brain' ],
  [ '0', '16', 'amber', id: '0', age: '16', name: 'amber' ]
]

我们看到,是以数字形式呈现的,其中struct值以 值+键值对 呈现。

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-09-20 15:50:50  更:2021-09-20 15:51:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/12 19:52:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码