gpt4 book ai didi

substrate - 在srml_support::storage::StorageMap中,get()和take()有什么区别

转载 作者:行者123 更新时间:2023-12-02 00:52:03 25 4
gpt4 key购买 nike

srml_support::storage::StorageMap , fn get() 和有什么不一样和 fn take() ?

最佳答案

get()简单地返回存储中的值:

/// Load the bytes of a key from storage. Can panic if the type is incorrect.
fn get<T: codec::Decode>(&self, key: &[u8]) -> Option<T>;
take()两者都执行 get()要返回值,还要 kill()从存储中删除 key :

/// Take a value from storage, deleting it after reading.
fn take<T: codec::Decode>(&mut self, key: &[u8]) -> Option<T> {
let value = self.get(key);
self.kill(key);
value
}

这意味着在 take() 之后操作,您可以调用 exists()它将返回 false .

一个常见的模式,其中 take()使用的是某种底池支付。假设在某场比赛结束时,获胜者获得底池中的所有资金。您会调用 take()在锅值上既可以获取应转移给用户的金额,又可以将锅重置为“零”。

请注意,此操作确实会写入存储,因此在运行时调用时,存储将被永久修改。

关于substrate - 在srml_support::storage::StorageMap中,get()和take()有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56750974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com