今日來介紹 function 的語法結構
function 裡面有三個很特別的保留字分別是 pure、view、payable,先看下面的簡單說明
它的用途是,如果該函式不會修改任何的狀態,就是用 pure
用前兩天的例子來展示
contract test {
struct Member {
string name;
string addr;
}
Member member;
function setMember() public {
member = Member('syhlion', 'Taiwan');
}
//它並沒有對任何狀態做改變
function getAddress() public view returns (string memory) {
return member.addr;
}
}
當函式不讀取,不異動狀態就會用 pure,用上面的例子來說,它有用到 member.addr,所以它有讀取到狀態,必須使用 view
j
// 這種完全沒有使用合約狀態的 fucntion 才能使用 pure
function plus(unint a,uint b) public pure returns(uint){
return a+b
}
需要接收 ether 的 function 都需要標註上 payable
function get(username) public payable{
}
一般語言裏面對 fucntion,也會有可視(visibility)的包留字,solidity 也不例外,有 public、private、internal、external
跟一般語言一樣,就是一個可以公開給大家呼叫的函式
大致上跟 public 一樣,但會有一個小缺點,自己合約內要調用這種宣告的 function,會需要使用 this.f()
就是私有函式,只能被自己合約所調用,也不會被繼承合約調用。
跟 private 很類似,但是可以如果被別人繼承合約,是能夠調用父層的 function。