原文:http://solidity.readthedocs.io/en/develop/types.html#function-types
函數類型
函數類型是函數的類型。函數類型可以被賦值,作為參數和返回結果,函數可分為Internal
和external
函數。
內部函數(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
的內容。