簡體   English   中英

Solidity - 如何編寫將地址設置為結構的 function?

[英]Solidity - How do I write a function that sets an address to a struct?

我正在嘗試創建一個 function 可以為結構設置地址,以便我可以輸入該地址並將結構數據返回給我。 即 0x876... 返回名稱“John”,余額“99”

我在“getInfoByWallet[_wall] = teamWallets;”上收到一條錯誤消息說的是

“來自solidity:mapping.sol:22:34:TypeError:類型類型(struct Mapping.teamWallets存儲指針)不能隱式轉換為預期類型struct Mapping.teamWallets storage ref。getInfoByWallet [_wall] = teamWallets;”

我很困惑,不知道該怎么做。 任何幫助深表感謝。

pragma solidity ^0.5.11;
pragma experimental ABIEncoderV2;

contract Mapping {

    struct teamWallets {
        string name;
        uint256 balance;
    }

    string name = "";
    uint256 balance = 0;
    teamWallets[] public _teamWallets;
    
    mapping(address => teamWallets) public getInfoByWallet;

    function addteamData(string memory _name, uint256 _balance) public {
        _teamWallets.push(teamWallets(_name, _balance));
    }

    function setInfo(address _wall, teamWallets memory) public {
        getInfoByWallet[_wall] = teamWallets;
    }
}

如果你想使用 struct 和 Solidity 映射,那么你必須遵循我在下面提到的這種方法。

在這里,您的 teamWallets 是結構。 那么您已經在映射 getInfoByWallet 時使用了它。

現在,當您必須在映射中設置數據時

struct teamWallets {
    string name;
    uint256 balance;
}

mapping(address => teamWallets) public getInfoByWallet;


function setInfo(address _wall, string memory _name, uint256 _balance) public {
    getInfoByWallet[_wall].name=_name;        
    getInfoByWallet[_wall].balance=_balance;
}

因此,這是將數據存儲在結構中並具有可靠映射的正確方法。 我希望,現在你清除了這個錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM