solidity0.6.0特性

本文详细介绍了Solidity 0.6.0版本中的新特性,包括结构体外部定义、数组长度属性变化、抽象合约及函数、重写函数关键字变更等,并展示了如何使用新的fallback和receive函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pragma solidity ^0.6.0;

struct User {   // 0.6.0后可以在合约外面定义结构体了,主要用于共享一些数据
    uint a;
}

// 0.6.0开始数组的length属性变为了只读属性,如果需要减少数组长度,需要使用pop()函数
contract MyContract {	
    uint[] num = [1, 2, 3];
    uint[3] num1 = [1, 2, 3];

    function f() public {
        // num1.length -= 1;
        // num.length -= 1;
        num.pop();
        
    }
    
    function get() view public returns(uint[] memory) {
        return num;
    }
}

// abstract, virtual, override
abstract contract Parent {	
    uint[] num;
    function foo() external virtual;		// 若函数没有实现,现在需要在合约前面加上abstract关键字,并且需要使用virtual修饰对应的函数
}

contract Son is Parent {
    function foo() external override {	 	// 现在子合约的继承需要重写时,需要使用override关键字修饰
        num.push(21);
    }
    
}

contract Parent1 {
    uint a;
}

contract Son1 is Parent1{
    // uint a; 		// 现在父合约已经定义的关键字,在子合约中无法再次定义
    function f() view public returns(uint) {
        return a;
    }
}

// 0.6.0后fallback的共能被拆分为了fallback和receive函数,两个函数都要使用external进行修饰
contract MyContract1 {
    receive() external payable{		// receive函数必须使用payable进行修饰,用于处理接收以太
        
    }
    
    fallback() external { // [payable]	// fallback的payable是可选项,主要处理不存在合约函数的调用
        
    }
    address a = 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4;
    address payable b = payable(a);	// 可以直接将address类型转换为address payable类型了
    
    
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值