📜  Solidity 中的映射 (1)

📅  最后修改于: 2023-12-03 14:47:30.756000             🧑  作者: Mango

Solidity 中的映射

映射(Mappings)是 Solidity 中一种用于存储键值对的高级数据类型。它类似于其他编程语言中的哈希表或字典。

声明映射

映射的声明格式如下:

mapping(keyType => valueType) public mapName;

其中,keyType 是映射中键的数据类型,valueType 是映射中值的数据类型,mapName 是映射的名称。可以根据需要选择不同的数据类型作为键和值。

访问和修改映射

可以使用键来访问和修改映射中的值。例如:

mapName[key] = value;

上述代码将映射 mapName 中键 key 对应的值设为 value

要访问映射中的值,可以使用 mapName[key] 的方式。如果键不存在,则返回默认值。

映射的特性

映射具有以下特性:

  1. 映射是动态长度的数据结构,可以根据需要添加和删除键值对。
  2. 没有显式的方法获取映射的长度,但可以通过迭代键值对来确定映射的大小。
  3. 键不可重复,每个键只能对应唯一的值。如果尝试为同一个键分配多个值,后一个值将覆盖前一个值。
  4. 默认情况下,映射中的值是 uninitialized(未初始化) 的,即使用默认值或零值作为初始值。
示例

下面是一个示例,演示了如何使用映射:

// 声明映射
mapping(uint => string) public students;

// 添加键值对
function addStudent(uint studentId, string memory name) public {
    students[studentId] = name;
}

// 获取学生姓名
function getStudent(uint studentId) public view returns (string memory) {
    return students[studentId];
}

上述代码中,我们声明了一个映射 students,将学生 ID(作为键)与学生姓名(作为值)关联起来。addStudent 函数用于添加学生的姓名,getStudent 函数用于获取学生的姓名。

请注意,映射的可见性修饰符 public 允许在合约外部访问映射。您可以根据需要选择不同的可见性修饰符。

总结

映射是 Solidity 中一种强大的数据类型,用于存储键值对。通过映射,您可以轻松地实现键值关联和查找功能。在编写 Solidity 合约时,映射是一个有用的工具,特别是当您需要管理大量数据时。