這個章節開始介紹 合約中的function,此章節很重要

function 架構如下:

截圖 2022-03-16 下午11.20.30.png

標示了架構特殊的是 可見性修飾器、可變性修飾器

1.可見性修飾器

下列為範例程式:

contract PublciInternalPrivateExternal {
    uint256 age = 100;

    function getAgeWitPublic() public view returns (uint256) {
        return age;
    }

    function getAgeWithInternal() internal view returns (uint256) {
        return age;
    }

    function getAgeWithPrivate() private view returns (uint256) {
        return age;
    }

    function getAgeExternal() external view returns (uint256) {
        return age;
    }

    function callFunction() public view returns (uint256) {
        return getAgeWitPublic();
    }
}

執行結果如下:

截圖 2022-03-17 上午11.29.16.png

我們可以發現 getAgeWithInternal()、getAgeWithPrivate() 這是不能給外部調用的,如果你在合約中看到,但也無法使用。

2.可變性修飾器

共通點:

通常view 、pure 都是會有返回值的

這兩類的修飾是不消耗gas的

下列程式說明:

contract ViewPrueExample {
    uint public age;

    function increaseAge() public {
        age++; // 設定變數
    }

    function getAgeWithView() public view returns (uint){
        return age;
    }

    function getAgeWithPrue() public pure returns (uint){
        return 100;
    }
}

分別來看執行結果

截圖 2022-03-17 上午9.13.13.png

截圖 2022-03-17 上午9.17.59.png

截圖 2022-03-17 上午11.15.09.png

     如果你試著要傳出內部變數得值的話就會發出錯誤

截圖 2022-03-17 上午11.18.40.png

6.Mapping

有任何問題可反饋: [email protected]