Solidity-函数

原文:http://solidity.readthedocs.io/en/develop/types.html#function-types

代码运行环境:https://ethereum.github.io/browser-solidity/

函数类型

函数类型是函数的类型。函数类型可以被赋值,作为参数和返回结果,函数可分为Internalexternal函数。

内部函数(Internal)

在当前合约内被调用,可允许继承。

外部函数(External)

由地址和方法签名组成。可作为参数传给外部函数调用,或由函数调用返回。

完整的函数的定义如下:

function (<parameter types>) {internal(默认)|external} [constant] [payable] [returns (<return types>)]

函数类型的一些特点:

如果函数不需返回内容,则需去除returns关键字

默认的函数类型是internal的。

pragma solidity ^0.4.0;

contract Test{
    //default internal
    function noParameter() returns (uint){}
    
    //nothing to return
    function noReturn1(uint x) {}
    
    //if no return,must remove returns keywords
    //function noReturn2(uint x) returns {} 
    
}

调用上的特点:

this.是调用的external的方法。直接调用的话是通过内部调用。

pragma solidity ^0.4.5;

contract Test{
    function internalFunc() internal{}
    
    function externalFunc() external{}
    
    function callFunc(){
        //call from inner
        internalFunc();
        
        //can't call from internal
        //externalFunc();
        
        //can't call from external
        //this.internalFunc();
        
        this.externalFunc();
    }
}

备注:
如果函数未初始化,调用会引发异常;删除一个函数后,调用它也会触发一个异常。

如果在外部调用external的函数,函数会被打包成一个紧跟在地址后的bytes24的内容。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容