solidity部分修飾符的使用以及合約的部分呼叫方法

行者akai發表於2023-01-14

View pure修飾符:

使用viewpure不需要gwei

view:不能修改鏈上資料只能訪問

pure:不能訪問鏈上資料,被修飾的方法裡的變數只能在方法內使用

contract ViewPureExample {

    uint public age;

 

    function increaseAge() public{

        age ++;

}

 

    function GetViewAge() public view returns(uint){ //view 修飾

        //age ++;// 不可修改變數

        return age;

}

 

function GetPureAge(uint age) public pure returns(uint){ //因為pure方法 所以需要設定引數

       

        age ++;

 

        return age;//如果直接return會直接報錯  因為pure修飾 所以不能訪問方法外的變數

 

    }

}

 

Public internal private external 方法修飾符:

public:任何地方都可以呼叫

internal:只有本sol檔案呼叫

private:只有本合約能呼叫

external:只能從外部呼叫即合約外部

 

contract PublicExternalPrivateInternal {

    uint age = 100;

 

    function GetAgeWithPublic() public view returns(uint){  //外部內部都可呼叫

        return age;

    }

    function GetAgeWithInternal() internal view returns(uint){ // 本sol檔案呼叫

        return age;

    }

 

    function GetAgeWithPrivate() private view returns(uint){ //本合約呼叫

        return age;

    }

function GetAgeWithExternal() external view returns(uint){ //只能外部

//呼叫

        return age;

    }

    function Callfunction() public view returns(uint){

        return GetAgeWithPrivate();//方法可以呼叫方法只要被呼叫的方法允許

    }

}

可以自行編譯後嘗試呼叫檢視輸出

 

簡單的合約呼叫:

contract Salary {

    uint public data;

 

    function getData() external view returns(uint){

        return data;

}

 

    function setData(uint _data) external {

        data = _data;

    } 

}

 

contract Employee {

    Salary salart;

    constructor(){

        salary = new Salary();

    }

    function getSalary() external view returns(uint){

        return salary.getData();

    }

    function setSalaty(uint _data) external {

        salary.setData(_data);

    }

}

相關文章