智能合約開發實戰(八) - 函式修飾詞

更新於 發佈於 閱讀時間約 3 分鐘
我們知道function除了四種可見度 (visibility) 之外,還有三種比較常見的函式修飾詞(view、pure、payable),這篇就也來認識一下這三種函式修飾詞是做什麼用的吧。

View

當函式不修改任何狀態時,可以在函式宣告時標記"view"關鍵字
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;

contract ViewAndPure {
  uint c = 3; //狀態變數
  constructor(){
  }

  //使用view,當函式不修改任何狀態時,可以在函式宣告時標記"view"關鍵字
  function _view(uint a, uint b) public view returns (uint){
    return a * (b + 11) + c;
  }
}

Pure

當函式不讀取或不修改狀態時,可以在函式宣告時標記"pure"關鍵字
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;

contract ViewAndPure {
  uint c = 3;//狀態變數
  constructor(){
  }

  //當函式不讀取或不修改狀態時,可以在函式宣告時標記"pure"關鍵字
  function _pure(uint a, uint b) public pure returns (uint){
    //當這樣寫的時候就會報錯,因為pure不能讀取和修改狀態,要去掉"c"
    //return a * (b + 11) + c;
    return a * (b + 11);
  }
}

Payable

讓函式可以接收以太幣
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;

contract ViewAndPure {
  constructor(){
  }

  //讓函式可以接收以太幣
  function _payable(uint _value) public payable {
    // ....
  }
}
從上面的程式碼可以看出,除了Payable是用來接收以太幣的之外,主要最常用的就view和pure了,這兩個也是最多人比較的,其實兩個很容易理解的,view就是可以讀取狀態變數的但不能去改變它,而pure是除了不能改變之外也不能去讀取狀態變數,不然就會報錯,好處當然是沒有讀取也沒有改變就不會消耗Gas fee,所以在function內,為了防止不小心在不需要改變狀態變數的function內去用到或是改變了狀態變數,所以適時的在function上加入view和pure,除了可以防呆之外還能省Gas fee,可說是一舉兩得呀。
有什麼想要了解或是不清楚的部份,歡迎留言和我分享,謝謝。
如果喜歡我的文章歡迎追隨,按愛心,我每週都會上新文章。
為什麼會看到廣告
avatar-img
20會員
38內容數
目前加密貨幣的市場上幣種非常的多 讓你看得眼花撩亂了嗎? 可以藉由這一系列的加密貨幣分析 能夠幫忙您了解每一個加密貨幣它的價值所在 每一集都會介紹一種幣 是一個很實用的專題,歡迎大家訂閱~
留言
avatar-img
留言分享你的想法!

































































宅D嘉的沙龍 的其他內容
事件(Event)在整個智能合約開發裡面是很常見也很常出現的應用,所以這篇我們就來說說Event到底該怎麼寫、怎麼應用。
繼承是智能合約開發很常見也很重要的一種方法,繼承主要是子合約可以從父合約中繼承所有的屬性和方法。 繼承寫法很簡單,就是在子合約後面加入"is"父合約的名稱就可以了
這篇我們來談談有關Solidity Function visibility(能見度) Solidity的function visibility有四個關鍵字(private、internal、external或public)。
所以寫程式的人都知道的一句話:「Hello World」,每一個學程式語言開始的時候都是從這句話開始的,我們也不免俗的來上這一句,從Hello World來看看智能合約入門是個什麼樣子。
上班族上班的時候,不太方便開Max或是幣安等交易所查看幣價的時候該怎麼辦呢?這篇就教你怎麼在Google試算表上就能查看幣價。
當有了初步的認識後,在要開始寫程式之前當然是要選擇用什麼IDE。 如果是線上IDE的話可以用Remix這是一個線上的Solidity IDE,可以用來撰寫Solidity 但我個人是比較習慣微軟的Visual Studio Code(之後簡稱VS Code)來撰寫,兩者其實都可以,看個人習慣。
事件(Event)在整個智能合約開發裡面是很常見也很常出現的應用,所以這篇我們就來說說Event到底該怎麼寫、怎麼應用。
繼承是智能合約開發很常見也很重要的一種方法,繼承主要是子合約可以從父合約中繼承所有的屬性和方法。 繼承寫法很簡單,就是在子合約後面加入"is"父合約的名稱就可以了
這篇我們來談談有關Solidity Function visibility(能見度) Solidity的function visibility有四個關鍵字(private、internal、external或public)。
所以寫程式的人都知道的一句話:「Hello World」,每一個學程式語言開始的時候都是從這句話開始的,我們也不免俗的來上這一句,從Hello World來看看智能合約入門是個什麼樣子。
上班族上班的時候,不太方便開Max或是幣安等交易所查看幣價的時候該怎麼辦呢?這篇就教你怎麼在Google試算表上就能查看幣價。
當有了初步的認識後,在要開始寫程式之前當然是要選擇用什麼IDE。 如果是線上IDE的話可以用Remix這是一個線上的Solidity IDE,可以用來撰寫Solidity 但我個人是比較習慣微軟的Visual Studio Code(之後簡稱VS Code)來撰寫,兩者其實都可以,看個人習慣。
你可能也想看
Google News 追蹤
Thumbnail
在幣圈,常聽到一句話——「珍愛生命,遠離合約」。這句話可不是空穴來風。虛擬貨幣合約交易,因其高槓桿和高風險,吸引了無數投資人進場,也讓許多人在瞬間失去所有資本。本文將深入探討什麼是虛擬貨幣合約交易、其優勢和風險,並引導讀者在進場前做出慎重考慮。 什麼是虛擬貨幣合約交易? 虛擬貨幣合約交易指的是
分佈式帳本是區塊鏈技術不可或缺的一部分,它通過將數據分散儲存於多個節點,提升數據的安全性及可信度。區塊鏈的共識機制決定交易的有效性及節點的權限運作。本文對不同共識機制,如工作量證明(PoW)和權益證明(PoS)進行探討,並分析其各自的優缺點及在實際應用中的潛力。
Thumbnail
在幣圈,常聽到一句話——「珍愛生命,遠離合約」。這句話可不是空穴來風。虛擬貨幣合約交易,因其高槓桿和高風險,吸引了無數投資人進場,也讓許多人在瞬間失去所有資本。本文將深入探討什麼是虛擬貨幣合約交易、其優勢和風險,並引導讀者在進場前做出慎重考慮。 什麼是虛擬貨幣合約交易? 虛擬貨幣合約交易指的是
分佈式帳本是區塊鏈技術不可或缺的一部分,它通過將數據分散儲存於多個節點,提升數據的安全性及可信度。區塊鏈的共識機制決定交易的有效性及節點的權限運作。本文對不同共識機制,如工作量證明(PoW)和權益證明(PoS)進行探討,並分析其各自的優缺點及在實際應用中的潛力。