Solidity-函数

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

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

函数类型

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

内部函数(Internal)

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

外部函数(External)

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

完整的函数的定义如下:

function () {internal(默认)|external} [constant] [payable] [returns ()]

函数类型的一些特点:

如果函数不需返回内容,则需去除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的内容。

你可能感兴趣的:(Solidity-函数)