Struct类型定义
例如定义一个struct类型的Person
struct Person {
string name;
uint sexy; //0: 男性;1:女性;
uint age;
string mobile;
}
建立一个Struct的Demo合约
- Step 1: 撰写最基本的合约
pragma solidity 0.4.10;
contract DemoTypes9 {
struct Person {
string name;
uint sexy; //0: 男性;1:女性;
uint age;
string mobile;
}
Person[] public PersonList;
}
最初的合约只定义了struct person类型,以及一个数组Person[] PersonList
- Step 2: 给构造函数中添加初始化代码
function DemoTypes9() { /*数组类型添加元素方式1*/ uint id = PersonList.length++; Person p = PersonList[id]; p.name = "阿三"; p.sexy = 0; p.age = 20; p.mobile = "13918802350"; }
Step 1-2后,完整代码如下:
pragma solidity 0.4.10;
/*演示一下结构,如何和数组类型结合,一起使用;*/
contract DemoTypes9 {
struct Person {
string name;
uint sexy; //0: 男性;1:女性;
uint age;
string mobile;
}
Person[] public PersonList;
function DemoTypes9() {
/*数组类型添加元素方式1*/
uint id = PersonList.length++;
Person p = PersonList[id];
p.name = "阿三";
p.sexy = 0;
p.age = 20;
p.mobile = "13918802350";
}
}
以上代码在Browser-solidity中的执行结果如下图所示:
- Step 3: 添加一个AddPerson function, 使用之前的数组类型使用过的push方法
function AddPerson (string _name, uint _sexy, uint _age, string _mobile) {
/*数组类型添加元素方式2*/
Person memory tmp;
tmp.name = _name;
tmp.sexy = _sexy;
tmp.age = _age;
tmp.mobile = _mobile;
PersonList.push(tmp);
}
Browser-solidity的执行情况如下:
- Step4: 上面的AddPerson() 有点长,下面有一个更简单的方法 AddPerson2()
function AddPerson2 (string _name, uint _sexy, uint _age, string _mobile) {
/*数组类型添加元素方式3*/
uint id = PersonList.length++;
PersonList[id] = Person({name: _name, sexy: _sexy, age: _age, mobile: _mobile});
}
AddPerson2() 的方法简洁了很多
Browser-solidity的执行情况如下
完整代码在下面:
pragma solidity 0.4.10;
/*演示一下结构,如何和数组类型结合,一起使用;*/
contract DemoTypes9 {
struct Person {
string name;
uint sexy; //0: 男性;1:女性;
uint age;
string mobile;
}
Person[] public PersonList;
function DemoTypes9() {
/*数组类型添加元素方式1*/
uint id = PersonList.length++;
Person p = PersonList[id];
p.name = "阿三";
p.sexy = 0;
p.age = 20;
p.mobile = "13918802350";
}
function AddPerson (string _name, uint _sexy, uint _age, string _mobile) {
/*数组类型添加元素方式2*/
Person memory tmp;
tmp.name = _name;
tmp.sexy = _sexy;
tmp.age = _age;
tmp.mobile = _mobile;
PersonList.push(tmp);
}
function AddPerson2 (string _name, uint _sexy, uint _age, string _mobile) {
/*数组类型添加元素方式3*/
uint id = PersonList.length++;
PersonList[id] = Person({name: _name, sexy: _sexy, age: _age, mobile: _mobile});
}
}
原文:http://www.ethchinese.com/?p=1047
QQ群:559649971 (区块链学堂粉丝群)
个人微信:steven_k_colin
获取最新区块链咨询,请关注《以太中文网》微信公众号:以太中文网