load_object_by_primary_iterator
Создаёт экземпляр многоиндексной таблицы.
- Аргументы
-
| code | — аккаунт-владелец таблицы |
| scope | — идентификатор области (scope) в иерархии кода |
- Предусловие
- свойства code и scope заданы
- Постусловие
- каждая таблица вторичного индекса инициализирована
-
Вторичные индексы обновлены для ссылки на новый объект; при отсутствии таблиц вторичных индексов они создаются.
-
С плательщика взимается хранение нового объекта и, при необходимости создания таблицы (и таблиц вторичных индексов), накладные расходы на создание.
Замечания Шаблон eosio::multi_index имеет параметры <name::raw TableName, typename T, typename... Indices>, где:
TableName — имя таблицы, не более 12 символов из набора строчных букв, цифр 1–5 и «.»; преобразуется в eosio::raw (обёртка над uint64_t);
T — тип объекта (определение строки);
Indices — список до 16 вторичных индексов.
- Каждый элемент должен быть классом или структурой с конструктором по умолчанию
- У каждого должен быть оператор вызова, принимающий const-ссылку на тип объекта строки и возвращающий вторичный ключ или ссылку на него
- Рекомендуется шаблон eosio::const_mem_fun
Пример:
#include <eosiolib/eosio.hpp>
using namespace std;
class addressbook: contract {
struct address {
string first_name;
string last_name;
string street;
string city;
uint64_t primary_key()
const {
return account_name; }
};
public:
addressbook(name self):contract(self) {}
void myaction() {
address_index addresses(_self, _self.value);
}
}
См. определение в файле multi_index.hpp строка 892