今日來介紹 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
。