Solidity构造函数和析构函数
构造函数:当方法名字和合约名字相同的时候,这个就是构造函数,构造函数在合约对象创建之后执行的
contract Person{
function Peron(){//构造函数Person
...
}
}
析构函数:selfdestruct
selfdestruct(msg.sender)//析构函数
pragma solidity ^0.4.13;//首先第一个是版本的申明
/*
pragma;版本申明
solidity:开发语言
0.4.13:当前合约的版本,0。4代表的是主版本,.13代表的修复bug的升级版
^代表的是向上兼容的意思,0.4.13`0.4.9可以对我们当前的代码进行编译
*/
//contrace person类似 class person extends contract
contract Person {
uint _height;//属性名加下划线,代表的是一种规范,编译代码的时候的一种规范
uint _age;//年龄,无符号整形
//当方法名和合约名相同时就属于构造函数,在创建对象的时候,构造函数会最先被调用
function Person() {
_height=1080;
_age=20;
address _owner;//合约的拥有者
}
//标准的形式来写,驼峰的形式来写setHight
function setHight(uint height) {
_height=height;
_owner=msg.sender;
}
//度去_height,如果后面不加上constant的话,那么要调用call方法才可以,如果加上了call方法的话,那么就不需要加上call方法就可以取出来
function gteHeight() constant returns (uint) {//返回的是什么类型,后面不用加什么东西
return _height;//return,_height加不加上括号都可以
}
function kill() {//如果后面加上constant的时候,刚创建就会把他销毁掉了
if (_owner==msg.sender){
//析构函数
selfdestruct(msg.sender);//msg代表的是全局,selfsdestruct这个是析构函数
}
}
function owner() constant returns (address) {//返回的是地址的类型
return _owner;
}
}
//每一个合约都有一个地址
//在执行这个合约对象的时候,会先去创建判断这些带constant的方法
Solidity在线编辑工具:https://remix.ethereum.org/
从这里可以看到这个合约的详细信息:
合约地址:当合约内容相同的饿时候,那么这个合约地址也是相同的,0x692a70d2e424a56d2c6c27aa97d1a86395877b3a
cost:创建这个合约所消耗的gas,不管创建合约对象或者是执行合约里面的方法的时候都会消耗gas值
ABI:可以去https://www.bejson.com/转化为JOSN的格式