Vyper入门:7.映射类型


文档摘要

Vyper 入门: 7. 映射类型 在Vyper中,映射(Mapping)是一种将键映射到值的数据结构,用于存储键值对的集合,通过 关键字定义 映射特点 键不会直接存储在映射中,而是通过其哈希值访问。 映射的值默认初始化为相应类型的默认值。 映射无法遍历,也没有提供长度属性。 映射声明 映射声明需要指定键和值的类型,例如 , 其中 可以是Vyper中的任何基本类型或字节类型,但是不支持映射、数组或结构作为键类型。 则可以是任何类型,包括映射和结构。 映射是状态变量,只在函数外部声明,无法在函数内部声明映射类型。

Vyper 入门: 7. 映射类型

在Vyper中,映射(Mapping)是一种将键映射到值的数据结构,用于存储键值对的集合,通过 HashMap 关键字定义

映射特点

  • 键不会直接存储在映射中,而是通过其哈希值访问。
  • 映射的值默认初始化为相应类型的默认值。
  • 映射无法遍历,也没有提供长度属性。

映射声明

映射声明需要指定键和值的类型,例如 HashMap[_KeyType, _ValueType], 其中 _KeyType 可以是Vyper中的任何基本类型或字节类型,但是不支持映射、数组或结构作为键类型。_ValueType 则可以是任何类型,包括映射和结构。

映射是状态变量,只在函数外部声明,无法在函数内部声明映射类型。

示例代码

example_mapping: public(HashMap[uint256, uint256]) # 映射赋值 @external def set_mapping(): self.example_mapping[0] = 100 # 无法在函数内部声明一个映射,这样会出错 # example_mapping: HashMap[uint256, uint256]

映射使用

  • 读取: 通过提供键来访问映射中的值
number: uint256 = self.example_mapping[0] # number == 100
  • 更新: 为给定的键分配新值
self.example_mapping[0] = 99 # number == 99
  • 删除:将键的值重置为默认值
self.example_mapping[0] = empty(uint256) # number == 0

总结

映射在智能合约中非常有用,尤其是在需要有效地跟踪和更新状态的场景中。正确使用映射对于开发高效和安全的智能合约至关重要。比如存储资产所有权和代币余额,映射的作用往往比数组更加高效。


作者与出处
原作者: WTFAcademy
来源:WTFAcademy
许可证:MIT
整理: 灏天文库整理
由灏天文库结构化整理,提供目录导航、全文检索与在线阅读,便于系统化学习
发布者: 作者: WTFAcademy 转发
评论区 (0)
U