View pure修飾符:
使用view與pure不需要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);
}
}