[Day27]What is mapping?


hi!今天要介绍mapping!其实mapping很像一个hash table,有很多时候都会有一个名字对应一个数值的状况,好比在银行时,一个用户名会对应一个银行户头金额、在学校时,一个学生名会对应一个成绩...等,像这种状况,就会需要一个地方去整理这些数值,并且让这些值是可以用名称去找到的。
在这样的状况下,我们会说用户名叫做key、户头金额是value,学生名是key、成绩是value。
要注意的是mapping并不是拿来存key或value资讯的地方,而且也没有任何长度(length)资讯!就像我们一开始说的,它像hash table,所以会把keccak(key)的hash拿来对应value。
所以没有真的使用key,而是用key的hash。这样就会有一个限制,就是当你今天key没有东西的时候,就完全无法对应value!那在还没有填东西进去之前,乙太链都会直接定义是0,同样的mapping还没使用到的地方也会被初始化为0。
所以我们要来宣告看看mapping!

宣告mapping

mapping(key型别=> Value型别)名称
mapping(String =>uint) number(学生名 对应 成绩并且命名为number)
mapping

mapping的删除

虽然一般我们如果宣告一个变数uint x=2; delete x;x=0
但今天如果我们使用mapping(Zona=>100),delete Zona是无法删除东西的!
要切记key一定要跟mapping一起使用,不然什麽都不是!
正确应该是

delete map[Zona];

Message

message其实是由两种格式来组成,
Sender: 传送的来源位置 (msg.sender)
Value: 传送者送过来的 Wei (msg.value)



<<:  Day26 React Router useLocation

>>:  EP 26 - [Ruby on Rails] 使用状态机管理订单

DAY27 - 网站正式上线前的准备

前言 今天是铁人赛的第27天,终於要进入把网站从自己的电脑里搬到云端上(服务器端) 有关於网址与网路...

浅谈档案系统

你是否想过: 电脑是如何储存我们所建立的档案? 为什麽要做磁碟重组? 如果不知道问题的答案,就跟着笔...

第一份软件开发工作

於今年一月份毕业,在大学学了作业系统、资料结构、演算法、JAVA 程序语言...,但我从没想过要如何...

awk-3 运算符与函数

前两篇回顾 awk - 简介 Linux 制表好工具 awk-2 Regex搭配浅谈 awk是个程序...

C#入门之类(补充)

前面我们有讲过 C# 中的类,今天我们补充点,关于类的继承的内容。 在实际的环境中,我们的对象都是不...