下面是多索引表的使用指南。
为了深入和清晰的了解多索引表,最终的.cpp文件部分将被进一步详细讨论和讨论。注意,完整的.cpp文件可以在页面的底部找到。
词汇表
code
:是指已公布智能合约的account_name
。scope
:account_name
所涉及数据范围。table_name
: 存储在内存中的表的名称。
代码分解
要存储的结构
要在多索引表中存储的数据是limit_order
结构。primary_key()
,get_expiration()
,get_price()
函数用于返回表。返回的表将根据调用的函数排序。
struct limit_order {
uint64_t id;
uint128_t price;
uint64_t expiration;
account_name owner;
auto primary_key() const { return id; }
uint64_t get_expiration() const { return expiration; }
uint128_t get_price() const { return price; }
EOSLIB_SERIALIZE( limit_order, ( id )( price )( expiration )( owner ) )
};
建一个多索引表
auto payer = ilm.get_account();
...
payer
是保存帐户的变量,它将账单元素添加到多索引表中,并修改已经在多索引表中的元素。
...
eosio::multi_index< N( orders ), limit_order,
...
N(orders)
是多索引表的名称,limit_order
是要存储在表中的数据。
...
indexed_by< N( byexp ), const_mem_fun< limit_order, uint64_t,
&limit_order::get_expiration> >,
...
indexed_by< N( byexp ), const_mem_fun< limit_order, uint64_t, &limit_order::get_expiration> >
定义了多索引表的索引方式。N(byexp)
是这个索引的名称。const_mem_fun
表示正在查询的数据类型、limit_order
的变量的类型是uint64_t
,将使用get_expiration
函数获取变量。
...
indexed_by< N( byprice ), const_mem_fun< limit_order, uint128_t, &limit_order::get_price> >
...
indexed_by< N( byprice ), const_mem_fun< limit_order, uint128_t, &limit_order::get_price> >
定义了多索引表的索引方式。N(byprice)
是这个索引的名称。const_mem_fun
表示正在查询的数据类型、limit_order
的变量的类型是uint128_t
,将使用get_price
函数获取变量。
orders( N( limitorders ), N( limitorders )
orders
即是多索引表。