#solidity
#солидность
Вопрос:
Я пытаюсь выполнить следующий код, но получил эту ошибку.
Если я добавлю память внутри параметров функций, я получу новую ошибку:
Ошибка типа: местоположение данных может быть указано только для типов array, struct или mapping, но было задано «memory».
pragma solidity 0.8.7;
mapping (string => uint) wallet;
function saveWalletData(uint _qty , string _name) public{
wallet[_name] = _qty;
}
function consultarWallet(string _name) public view returns(uint){
return wallet[_name];
}
Ответ №1:
string
является ссылочным типом в Solidity. Для всех ссылочных типов вам необходимо указать их местоположение данных (docs).
В этом случае вы можете использовать calldata
для обоих, потому что вы не изменяете значение _name
переменной.
function saveWalletData(uint _qty , string calldata _name) public{
wallet[_name] = _qty;
}
function consultarWallet(string calldata _name) public view returns(uint){
return wallet[_name];
}
Если вы хотите изменить значение в памяти, вам нужно использовать memory
.