如何在 Solidity 中将结构保存在数组中?

How to save structs in array in Solidity?

我写了一个非常简单的智能合约,它执行以下操作:

代码如下:

pragma solidity ^0.8.0;
    
contract MyContract {
    
    // Declare struct
    struct Player {
        string name;
        uint goals;
    }
    
    // Declare array
    Player[] player;
    
    function addPlayer(string calldata _name, uint _goals) external pure{
    
       Player memory player = Player({name:_name, goals:_goals}); // This declaration shadows an existing declaration.
    
       players.push(player); // Member "push" not found or not visible after argument-dependent lookup in struct MyContract.Player memory.
    
    }
    
}

我的目标是使用 addPlayer() 函数将玩家添加到 players 数组 然而,VisualStudio 编辑器 returns 出现错误,因为它被 Player 变量的声明弄糊涂了,该变量似乎是两次。

能否请您提供一种巧妙而优雅的方式来实现我的目标?

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
    
contract MyContract {
    
    // Declare struct
    struct Player {
        string name;
        uint goals;
    }
    
    // Declare array
    Player[] players;
    
    function addPlayer(string calldata _name, uint _goals) external {
    
       Player memory player = Player(_name,_goals); // This declaration shadows an existing declaration.
    
       players.push(player); // Member "push" not found or not visible after argument-dependent lookup in struct MyContract.Player memory.
    
    }
    
}

感谢 Chíp Thảo 留下不完整解释的答案:) 下面继续解释: 在第 12 行中,您声明了一个数组 Player[] player,名称为 player,并且在第 16 行中,您再次声明了一个名称为 player 的变量!最好将第 12 行更改为 players.