以太坊学习第一天

我的第一个合约

pragma solidity ^0.4.5;

contract MyFirstContract {
    uint _age;
    address _owner;

    function MyFirstContract() {
        _owner=msg.sender;
    }

    function set_age(uint age) {
        _age=age;
    }
    function cat_age() constant returns (uint){
        return _age;
    }
    function Kill() {
        if (msg.sender==_owner){
            selfdestruct(_owner);
        }
    }
}

属性、方法的三种访问权限和继承以及合约的多继承

pragma solidity ^0.4.5;

contract pcl_all{
    uint private _pcl1;     //只有private的属性不会被继承
    uint public _pcl2;      //public会默认创建一个可被调用的get方法,方法与属性名同名。
    uint internal _pcl3;

    function pcl_all() public{
        _pcl1=1;
        _pcl2=2;
        _pcl3=3;
    }

    function pcl1() constant public returns (uint){
        return 1;
    }

    function _pcl2() constant public returns (uint){
        return 22222;
    }

    function pcl3() constant internal returns (uint){
        return 3;
    }
}

contract pcl{
    uint public facker_is_my_ouxiang;
    function pcl(){
        facker_is_my_ouxiang=11111;
    }
}


contract pcl_1 is pcl_all,pcl{
    function test() constant returns(uint){
        return _pcl2+_pcl3;
    }
}

合约中函数的重写

pragma solidity ^0.4.5;

contract pcl{
    address _owner;

    function pcl() {
        _owner=msg.sender;
    }
    function send_add() constant returns (address) {
        return msg.sender;
    }
}


contract pcl2 is pcl{
    function send_add() constant returns (address) {
        return _owner;
    }
}

值传递和引用传递

pragma solidity ^0.4.5;

contract pcl{
    string  _name;
    
    function pcl(string name){      //定义一个和合约一样名字的函数就是初始化class。这时候传入name
        _name=name;
    }
    
    function diaoyong(){            //写一个函数用来调用值传递和引用传递的例子。
        // yinyongchuandi(_name);   //当把引用传递这个注释掉的时候,_name的值是不会变得。因为传的是值,而不是指针。
        zhichuandi(_name);          //但是当引用传递时,就相当于把_name的指针传了过去,再操作name的时候就是对_name进行操作
    }
    
    function yinyongchuandi(string storage name) internal constant{
        bytes(name)[0]='a';         //当使用storage时就不能对name进行增删,因为唯一的内存大小已经被生成了。
    }
    
    function zhichuandi(string memory name) internal constant{
        _name='123';        //
    }
    
    function get_name() constant returns (string){
        return _name;
    }
    
}

中文文档:Solidity

上一篇:用51单片机,keil编程,proteus仿真,实现2位数码管00-99自动计数


下一篇:C# 托管资源与非托管资源(参考七)