1.mapping
一种键值对的映射关系存储结构
语法:mapping(_Key => _Value)
,键值对类型,键是唯一的,其赋值方式为:map[a]=test; 意思是键为a
,值为test
;
注:
1.键的类型允许除映射外的所有类型,如数组,合约,枚举,结构体。值的类型无限制。
2.在映射表里没有长度,键集合,值集合这样的概念,同时映射并没有做迭代的方法,可以自行实现:https://github.com/ethereum/dapp-bin/blob/master/library/iterable_mapping.sol 这是git上的一个实现方法
2.控制结构
不支持switch和goto,支持if,else,while,do,for,break,continue,return,?:。
条件判断中的括号不可省略,但在单行语句中的大括号可以省略。
需要注意的是,这里没有像C语言,和javascript里的非Boolean类型的自动转换,比如if(1){…}在Solidity中是无效的。
3.delete
用于将某个变量重置为初始值。对于整数,运算符的效果等同于a = 0。而对于定长数组,则是把数组中的每个元素置为初始值,变长数组则是将长度置为0。对于结构体,也是类似,是将所有的成员均重置为初始值。
pragma solidity ^0.4.0;
contract A {
uint data;
function change(uint i) {
data = i;
}
function getdata() constant returns (uint a){
delete data;
return data;
}
}
4.抽象
抽象函数是没有函数体的的函数。如下:
pragma solidity ^0.4.0;
contract Feline {
function utterance() returns (bytes32);
}