合约销毁以及初始化对象

   selfdestruct(合约地址)

                合约销毁关键字,通过该关键字可以销毁合约。老版本上面销毁以后执行合约时会报错,新版本不会,拿uint相比,老版本会报异常,新版本会返回0;string者返回 空  字符串

    address url;
    
    uint public a = 0;
    
    constructor(){
        url=msg.sender;
    }
    
    function addA(){
        a+=10;
    }
    
    //销毁该合约销毁该合约好
    function xiaohui(){
        if(msg.sender == url){
            //销毁关键字
            selfdestruct(url);
        }
    }

struct : 定义对象关键字

    //这里我们定义了一个对象
    struct user{
        uint fens;
        string name;
    }
    
    //我们将对象通过memory初始化,不加memory 就会抛出异常。 初始化方式1
    function getUser() public view returns(uint,string){
        user memory u = user(100,"nihao");
        return (u.fens,u.name);
    }

    //初始化方式2
    function getUserq() public view returns(uint,string){
        user memory u = user({fens:300,name:"nihao你好s"});
        
        return (u.fens,u.name);
    }

对象里面定义mapper不可以直接被修改,需要赋值给变量灵活修改。

    struct user{
        uint fens;
        string name;
        //我们这里定义了一个mapping属性
        mapping(uint => string) map;
    }
    
    user meimei;
    
    function getUser() public view returns(uint,string){
        user memory u = user(100,"nihao");
        u.name="66666666s";
        meimei = u;
        //如果我们这里直接使用u 对象属性的话是不可以被赋值成功的。
        //所以我们上面需要重新定义一个对象,将数据赋值给对象以后在修改赋值的对象就可以了。
        meimei.map[0]="xgai修改cgo";

        return (u.fens,meimei.map[0]);
    }

注意事项:

 struct user{
        uint fens;
        string name;

    }
    
    //如果使用对象作为参数的话必须使用关键字internal 
    function getUser(user u) internal returns(user){
        //传入的对象不可以直接复制给里面对象属性,会报异常
        user a = u;

        return u;
    }
    struct user{
        uint fens;
        string name;

    }
    
    user er;

    //使用storage关键字可以将传入对象  地址  赋值给定义变量。storage 表示地址引用     
    function setUser(user storage u) internal{
        user map = u;
        map.name="nihao你好232";

    }

    //所以下面可以输出上面定义的string字符串
    function getUser()   returns(string){
        
        setUser(er);
        
        return er.name;
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值