Solidity
在映射中返回結構
嗨,我正在研究使用結構映射函式。擁有這個:
struct Persona{ string Nombre; uint Edad; } mapping (uint => Persona) RelacionID; function GuardarID(uint ID, string memory NombrePersona, uint EdadPersona) public{ RelacionID[ID] = Persona(NombrePersona, EdadPersona); } function VerPersona(uint verID) public view returns(Persona){ return RelacionID[verID]; }
這條線有問題:
function VerPersona(uint verID) public view returns(Persona)
混音 說:
TypeError: Data location must be "memory" or "calldata" for return parameter in function, but none was given. --> Estructura de datos/mappings.sol:45:57: | 45 | function VerPersona(uint verID) public view returns(Persona){ | ^^^^^^^
任何答案對我都有好處,謝謝!
當您必須返回非原始數據時,例如:數組、結構……您必須使用記憶體、儲存和呼叫數據等關鍵字來定義變數將儲存的數據區域。在這種情況下,您可以使用記憶體。您必須以這種方式更改您的智能合約:
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; contract MintWithERC20 { struct Persona{ string Nombre; uint Edad; } mapping (uint => Persona) RelacionID; function GuardarID(uint ID, string memory NombrePersona, uint EdadPersona) public{ RelacionID[ID] = Persona(NombrePersona, EdadPersona); } function VerPersona(uint verID) public view returns(Persona memory){ return RelacionID[verID]; } }
有關數據儲存的更多資訊,請點擊此處。