Изменяет существующий объект в таблице.
- Аргументы
-
| itr | — итератор на обновляемый объект |
| payer | — имя аккаунта-плательщика за хранение обновлённой строки |
| updater | — лямбда, обновляющая целевой объект |
- Предусловие
- itr указывает на существующий элемент
-
payer — действительный аккаунт, уполномоченный выполнять действие и оплачивать хранение
- Постусловие
- Изменённый объект сериализуется и заменяет прежний в таблице.
-
Вторичные индексы обновлены; первичный ключ объекта не меняется.
-
С плательщика взимается хранение обновлённого объекта.
-
Если payer совпадает с прежним плательщиком, списывается только разница объёма хранения (при отрицательной разнице — возврат).
-
Если payer другой, прежнему плательщику возвращается стоимость хранения старого объекта.
Исключения: При нарушении предусловий выполнение прерывается.
Пример:
void myaction() {
auto itr = addresses.find("dan"_n);
eosio::check(itr != addresses.end(),
"Address for account not found");
addresses.modify( itr, account payer, [&]( auto& address ) {
address.city = "San Luis Obispo";
address.state = "CA";
});
}
}
См. определение в файле multi_index.hpp строка 1657