Solidity-函數

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

代碼運行環境:https://ethereum.github.io/browser-solidity/

函數類型

函數類型是函數的類型。函數類型可以被賦值,作為參數和返回結果,函數可分為Internalexternal函數。

內部函數(Internal)

在當前合約內被調用,可允許繼承。

外部函數(External)

由地址和方法簽名組成??勺鳛閰祩鹘o外部函數調用,或由函數調用返回。

完整的函數的定義如下:

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的內容。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容