前一篇是說明 Solidity 的資料型別,在了解資料型別後就要來了解函式(Function),那最特別的就是修飾詞的部分,究竟什麼是修飾詞呢?就讓我來為各位解說吧!
還記得在開發 HelloWorld 合約時所提到的 view
與 pure
嗎?那個可以視為修飾詞,置於後方,這邊會再做說明來喚醒記憶!
有讀取狀態變數,但沒有改變狀態變數時可以使用,範例如下:
string public message = "Hi";
function message() public view returns(string memory) {
return message;
}
沒有讀取也沒有改變狀態變數時可以使用,範例如下:
string public message = "Hi";
function print(string memory name) public pure returns (string memory) {
return name;
}
讓函式可以接收以太幣的修飾詞,如果函式要接收以太幣卻沒加 payable
,當有人呼叫該函式並帶上以太幣的話會錯誤。
function receive() public payable {
//用msg.value接收
}
在 Solidity 中,修飾詞可以自定義,使用 modifier
保留字,限制合約發佈者才能存取的範例如下:
pragma solidity ^0.5.0;
constract Permission {
address private admin;
string public message = "Hi";
modifier onlyAdmin {
require(msg.sender == admin, "You don't have permission.");
_; //要加這個
}
constructor() {
admin = msg.sender;
}
function say() public view onlyAdmin returns(string memory) {
return message;
}
}
require
類似if
,如果條件不成立就不會繼續往下執行,後面會再說明。
學習修飾詞,並且學習如何自訂義修飾詞。