[英]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.