У меня есть такое отображение:
struct data {
string name;
string nickname;
}
mapping(address => data) public user;
Как правильно удалить один элемент из переменной user? Мне нужно только позвонитьdelete(user[address])
или же
мне также нужно удалить user[address].name
и user[address].nickname
?
Да, delete user[someAddress];
будет работать со структурами, не содержащими отображения.
Для этого вопроса, поскольку name
и nickname
не являются сопоставлениями, они будут автоматически удалены (установлены на ноль): нет необходимости делать что-то вроде «удалить пользователя [someAddress].name».
http://solidity.readthedocs.io/en/develop/types.html#delete
если вы удалите структуру, она сбросит все элементы, которые не являются сопоставлениями, а также рекурсивно перейдет к членам, если они не являются сопоставлениями.
Предостережение:
удаление не влияет на целые сопоставления (поскольку ключи сопоставлений могут быть произвольными и, как правило, неизвестными)
шмель
эт
Хайме
эт
Qwerty
эт