8、Solidity智能合约核心特性与知名标准解析

Solidity智能合约核心特性与知名标准解析

1. Solidity中的映射(Mappings)

映射(Mappings)在Solidity里是一种关联引用类型,类似其他语言中的哈希表或字典。它和数组一样是参数化的,能包含其他类型的元素。映射的特点是从键(keys)映射到值(values),键可以是任何值类型(包括字节或字符串),值则可以是任意类型(甚至其他映射)。不过,与数组不同的是,映射只能存储在存储区(storage),不能存于内存(memory)或调用数据(calldata)。

从底层来看,映射是哈希表,借助合约的大存储空间确保不同键不会冲突,从而保证对值的访问时间恒定。自动生成的公共映射获取器和数组的获取器类似,但它接收的是键而非索引。对于嵌套映射,获取器需为每个嵌套层级的键提供参数,且只返回最内层的值。

以下是一个包含简单映射和嵌套映射的示例合约:

contract PublicMappings {
  mapping(uint256 => string)
    public num2str;
  mapping(uint256 => mapping(uint256 => string))
    public num2num2str;
  constructor() public {
    num2str[10] = "foo";
    num2num2str[10][20] = "bar";
  }
}

需要注意的是,在Solidity里无法迭代映射中的键或值,若要跟踪插入映射的键,需单独用数组存储。

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值