iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 7
0
Blockchain

區塊練起來-智能合約與DApp開發系列 第 7

[區塊練起來-智能合約與DApp開發] DAY 07 - Solidity 修飾詞

貼心小語

前一篇是說明 Solidity 的資料型別,在了解資料型別後就要來了解函式(Function),那最特別的就是修飾詞的部分,究竟什麼是修飾詞呢?就讓我來為各位解說吧!


修飾詞解說

還記得在開發 HelloWorld 合約時所提到的 viewpure 嗎?那個可以視為修飾詞,置於後方,這邊會再做說明來喚醒記憶!

View

有讀取狀態變數,但沒有改變狀態變數時可以使用,範例如下:

string public message = "Hi";   
function message() public view returns(string memory) {
  return message;
}

Pure

沒有讀取也沒有改變狀態變數時可以使用,範例如下:

string public message = "Hi"; 
function print(string memory name) public pure returns (string memory) {
  return name;
}

Payable

讓函式可以接收以太幣的修飾詞,如果函式要接收以太幣卻沒加 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 ,如果條件不成立就不會繼續往下執行,後面會再說明。


今日小結

學習修飾詞,並且學習如何自訂義修飾詞。


上一篇
[區塊練起來-智能合約與DApp開發] DAY 06 - Solidity 型別
下一篇
[區塊練起來-智能合約與DApp開發] DAY 08 - Solidity 控制結構與函式
系列文
區塊練起來-智能合約與DApp開發31

尚未有邦友留言

立即登入留言