Solidity
Solidity ^0.5.0 中結構映射內部的訪問映射
我有一個看起來像這樣的契約:
contract a { struct Str { uint256 totalTokens; mapping(address => uint256) playerTokens; } mapping(uint256 => Str) public tokenStores; }
現在假設我們已將 tokenStores 定義為 public 並且將自動分配一個 getter 方法,是否可以使用來自 javascript 的鍵訪問特定的 playerTokens 值?Solidity ^0.5.0 中可能的任何解決方法?
您不能使用 getter from,
public
因為編譯器(尚)不知道如何使用嵌套鍵來製定函式。我相信如果您具體希望使用實驗性 ABI,這是可能的。一個更安全、更傳統的解決方法是簡單地建構您自己的 getter。
contract a { struct Str { uint256 totalTokens; mapping(address => uint256) playerTokens; } mapping(uint256 => Str) private tokenStores; // we'll make the getter manually function getPlayerToken(uint256 tokenId, address player) public returns(uint, uint) { Str storage t = tokenStores[tokenId]; return (t.totalTokens, t.playerTokens[player]); } }
希望能幫助到你。