Die Vertragsfunktion [Solidity development] gibt struct oder struct array zurück

Vorwort

Im Zeitalter von Solidity 0.4 wird die Rückgabe von Strukturen nicht unterstützt. Aber jetzt ist solidity in Version 0.8 eingetreten, diese Version unterstützt die direkte Rückgabe von Struct und Struct Array, das Folgende ist die spezifische Methode.

Codebeispiel

// 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;
    }
}

Ergebnis des Web3-Aufrufs

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' ]
]

Wir sehen, dass es in digitaler Form dargestellt wird, wobei der Strukturwert als Wert + Schlüsselwert-Paar dargestellt wird.

Supongo que te gusta

Origin blog.csdn.net/weixin_43742184/article/details/120202987
Recomendado
Clasificación