solidity系列教程<三>状态变量、局部变量、构造函数、析构函数、生命周期

我们先来看看比较完整的合约

pragma solidity ^0.4.14;

contract Counter {
    // 定义一个状态变量count 赋值为0;
    uint count = 0;
   //  声明一个地址类型的状态变量owner;
    address owner;
   //  
    function Counter() {
       // 构造函数,给状态变量owner赋值
       owner = msg.sender;
    } 
    function increment() public {
       //  声明一个局部变量 step 赋值为10;
       uint step = 10;
       if (owner == msg.sender) {
          count = count + step;
       }
    }
 
    function getCount() constant returns (uint) {
       return count;
    }

    function kill() {
       if (owner == msg.sender) { 
          // 析构函数,销毁合约,只有合约持有者调用这个方法才会进这个if语句
          selfdestruct(owner);
       }
    }
}

contract是合约声明的关键字,Counter是合约名字
contract相当于其他语言中的class,Counter相当于类名
count和owner就是状态变量,合约中的状态变量相当于类中的属性变量,

构造函数(Contructor)
function Counter()函数名和合约名相同时,此函数是合约的构造函数,当合约对象创建时,会先调用构造函数对相关数据进行初始化处理。

成员函数

  • function increment() public
  • function getCount() constant returns (uint)
  • function kill()
    都是Counter合约的成员函数,

局部变量
上个合约代码中的 step 变量为局部变量,局部变量只在离它最近的{}内容使用,函数执行完后会销毁。

状态变量
在这里我们也可以叫做成员属性,比如我们js中一个对象有属性和方法。上面合约代码中的 count 和 owner 即为状态变量

析构函数(selfdestruct)
析构函数和构造函数对应,构造函数是初始化数据,而析构函数是销毁数据。在counter合约中,当我们手动调用kill函数时,就会调用selfdestruct(owner)销毁当前合约。

你可能感兴趣的:(solidity系列教程<三>状态变量、局部变量、构造函数、析构函数、生命周期)