地址类型、映射
上一节
下一节
地址类型 Address
如果你在以太坊区块链或者智谷CTIS区块链上创建过账户并完成过转账,那么你对地址应该一点也不陌生。
地址类型表示以太坊地址,长度为20字节。地址可以使用 .balance 方法获得余额,也可以使用 .transfer 方法将余额转到另一个地址。
现在你只需要了解地址属于特定用户(或智能合约)。
例子:
address myAddress = 0xCf19b00EF0B330b562faE68BC92a88dAB55ca2cB;
映射 Mapping
与数组和结构体一样,映射也是引用类型。下面是声明映射类型的语法。
mapping(_KeyType => _ValueType)
_KeyType 可以是任何内置类型,或者bytes和字符串。不允许使用引用类型或复杂对象。也就是说支持除映射,变长数组,合约,枚举,结构体以外的任意类型。_ValueType 可以是任何类型。
例子:
//对于金融应用程序,将用户的余额保存在一个 uint类型的变量中: mapping (address => uint) public accountBalance; //或者可以用来通过userId 存储/查找的用户名 mapping (uint => string) userIdToName;
在第一个例子中,键是一个 address,值是一个 uint,在第二个例子中,键是一个uint,值是一个 string。
实战练习
我们可以指定“地址”作为宠物主人的 ID。当用户通过与我们的应用程序交互来创建新的宠物时,新宠物的所有权被设置到调用者的地址下。
我们通过给数据库中的宠物指定“主人”, 来支持“多玩家”模式。
为了存储宠物的所有权,我们会使用到两个映射:


