table,simple_map,property_map 使用场景 #249
-
上完了[05.NFT 合约案例讲解],课里面讲到的几个kv数据类型, 但table, simple_map这两个类型在NFTIssue.move中并没有被使用到。 对这几个KV类型的使用场景可能没有完全理解。 table: 源代码中的注释是这样写的,“individual table items to be represented by separate global state items”, "Type of large-scale storage tables"。我的理解是table是用来存储全局变量的。 simple_map: 存储局部变量。替代rust原生的HashMap property_map: token专用的类型。 |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
按照我的开发体验来讲,simple_map适合存储少量数据,因为他本质是一个vec,只是包装了key-value方法,所有的value存储还是在同一块storage。 所以我的做法是如果value是一个比较大的复杂类型,且value数目比较多且需要链下处理,最好还是table。 |
Beta Was this translation helpful? Give feedback.
按照我的开发体验来讲,simple_map适合存储少量数据,因为他本质是一个vec,只是包装了key-value方法,所有的value存储还是在同一块storage。
table则是真正意义的hashmap,value存储在key值指向的独立的storage,也正因如此,在aptos的api中提供了给出table按key查resource的方法,而如果使用simple_map存储大量数据,你的链下程序获得的是一个巨大无比的vec,要由你来遍历筛选。
所以我的做法是如果value是一个比较大的复杂类型,且value数目比较多且需要链下处理,最好还是table。