智能合約開發實戰(五) - Function visibility

更新於 發佈於 閱讀時間約 3 分鐘
這篇我們來談談有關Solidity Function visibility(能見度)
Solidity的function visibility有四個關鍵字(privateinternalexternalpublic)。
可以這樣理解:
  1. private私有的:只有在同一個contract內才能引用,繼承的也無法使用。
  2. internal內部的:同一個contract內可以使用,包含繼承的。
  3. external外部的:同一個contract內都不可使用,繼承的也不行,只能由第三方的contract才能調用。
  4. public公開的:開放的,上面的都可以調用。
上面這樣說好像還是很難懂,那我們就用實際的例子來做說明吧,不然怎麼叫實戰。
1.private和internal
正確應該是要把test1改成private ->internal ,這樣就會正確了,由於private只能同一個contract內才能調用,所以會報錯,改為internal就能給繼承的合約所調用了。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;
contract TestContract {
  uint private _int1;
  //初始化
  constructor() {
  }
  
  function test1() internal view returns(uint) {
    return _int1;
  }
}

contract TestContract2 is TestContract {
  //初始化
  constructor() {
  }

  function test2() private view returns(uint) {
    return test1();
  }
}
2.external,只能外部調用
當function設為external時,function就只能第三方的contract才能調用,內部或是繼承的都不能夠調用,這是比較特別的。
3.public,public的部份我就不用再多說了,就是內調或是外調都能夠使用,算是一個全公開的function了。
最多人感到困惑的是,有public又有external,那什麼時候該用哪一個呢?為什麼有public可以用還需要external呢?我就直接都用public就好了呀,那是因為public是可以使用內調的,但external不行,在區塊鏈上,當有使用到內存,相對的gas fee就會比較高,使用external會省一半的gas fee,所以如果所使用的function不需要內調的話,用external是個比較好的選擇,畢竟乙太坊的gas fee可是很貴的,一個好的程式設計師,這點也是要考慮到的。
有什麼想要了解或是不清楚的部份,歡迎留言和我分享,謝謝。
如果喜歡我的文章歡迎追隨,按愛心,我每週都會上新文章。
為什麼會看到廣告
avatar-img
20會員
38內容數
目前加密貨幣的市場上幣種非常的多 讓你看得眼花撩亂了嗎? 可以藉由這一系列的加密貨幣分析 能夠幫忙您了解每一個加密貨幣它的價值所在 每一集都會介紹一種幣 是一個很實用的專題,歡迎大家訂閱~
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
宅D嘉的沙龍 的其他內容
所以寫程式的人都知道的一句話:「Hello World」,每一個學程式語言開始的時候都是從這句話開始的,我們也不免俗的來上這一句,從Hello World來看看智能合約入門是個什麼樣子。
上班族上班的時候,不太方便開Max或是幣安等交易所查看幣價的時候該怎麼辦呢?這篇就教你怎麼在Google試算表上就能查看幣價。
當有了初步的認識後,在要開始寫程式之前當然是要選擇用什麼IDE。 如果是線上IDE的話可以用Remix這是一個線上的Solidity IDE,可以用來撰寫Solidity 但我個人是比較習慣微軟的Visual Studio Code(之後簡稱VS Code)來撰寫,兩者其實都可以,看個人習慣。
Solidity:用來撰寫智能合約的程式語言之一,也是最多人用的 Vyper:用來撰寫智能合約的程式語言之二,Vyper 是一種面向合約的Pythonic編程語言
智能合約(英語:Smart contract)是一種特殊協定,在區塊鏈內製定合約時使用,當中內含了程式碼函式 (Function),亦能與其他合約進行互動、做決策、儲存資料及傳送以太幣等功能(出處:維基百科),簡單的說就是在區塊鏈上做以太幣的交易或互動的一種程式(合約)。
最近年終歲末了,不過你們看到這篇應該已經年初了 汽車也到了又要保養又要繳保險的時間了 這篇就來簡單分享汽車保養可以怎麼省
所以寫程式的人都知道的一句話:「Hello World」,每一個學程式語言開始的時候都是從這句話開始的,我們也不免俗的來上這一句,從Hello World來看看智能合約入門是個什麼樣子。
上班族上班的時候,不太方便開Max或是幣安等交易所查看幣價的時候該怎麼辦呢?這篇就教你怎麼在Google試算表上就能查看幣價。
當有了初步的認識後,在要開始寫程式之前當然是要選擇用什麼IDE。 如果是線上IDE的話可以用Remix這是一個線上的Solidity IDE,可以用來撰寫Solidity 但我個人是比較習慣微軟的Visual Studio Code(之後簡稱VS Code)來撰寫,兩者其實都可以,看個人習慣。
Solidity:用來撰寫智能合約的程式語言之一,也是最多人用的 Vyper:用來撰寫智能合約的程式語言之二,Vyper 是一種面向合約的Pythonic編程語言
智能合約(英語:Smart contract)是一種特殊協定,在區塊鏈內製定合約時使用,當中內含了程式碼函式 (Function),亦能與其他合約進行互動、做決策、儲存資料及傳送以太幣等功能(出處:維基百科),簡單的說就是在區塊鏈上做以太幣的交易或互動的一種程式(合約)。
最近年終歲末了,不過你們看到這篇應該已經年初了 汽車也到了又要保養又要繳保險的時間了 這篇就來簡單分享汽車保養可以怎麼省
你可能也想看
Google News 追蹤
Thumbnail
/ 大家現在出門買東西還會帶錢包嗎 鴨鴨發現自己好像快一個禮拜沒帶錢包出門 還是可以天天買滿買好回家(? 因此為了記錄手機消費跟各種紅利優惠 鴨鴨都會特別注意銀行的App好不好用! 像是介面設計就是會很在意的地方 很多銀行通常會為了要滿足不同客群 會推出很多App讓使用者下載 每次
Thumbnail
在幣圈,常聽到一句話——「珍愛生命,遠離合約」。這句話可不是空穴來風。虛擬貨幣合約交易,因其高槓桿和高風險,吸引了無數投資人進場,也讓許多人在瞬間失去所有資本。本文將深入探討什麼是虛擬貨幣合約交易、其優勢和風險,並引導讀者在進場前做出慎重考慮。 什麼是虛擬貨幣合約交易? 虛擬貨幣合約交易指的是
分佈式帳本是區塊鏈技術不可或缺的一部分,它通過將數據分散儲存於多個節點,提升數據的安全性及可信度。區塊鏈的共識機制決定交易的有效性及節點的權限運作。本文對不同共識機制,如工作量證明(PoW)和權益證明(PoS)進行探討,並分析其各自的優缺點及在實際應用中的潛力。
Thumbnail
智能合约和区块链是当今社会最热门的话题之一,智能合约钱包是指用合约账户作为地址的钱包,是基于智能合约而不是外部账户的钱包,那么,智能合约钱包和区块链的关系是什么?一样安全吗?本文将为大家详细介绍 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20% 手续费返佣
0. 大綱Outline 以太坊交易 發起交易 與智能合約互動 receive & fallback function 1. 舊以太坊交易 Ethereum Gas Tracker - 7 Gwei - Etherscan //交易技術, 表示特定帳戶的交易數量,是計數器, 每發一筆交
Thumbnail
/ 大家現在出門買東西還會帶錢包嗎 鴨鴨發現自己好像快一個禮拜沒帶錢包出門 還是可以天天買滿買好回家(? 因此為了記錄手機消費跟各種紅利優惠 鴨鴨都會特別注意銀行的App好不好用! 像是介面設計就是會很在意的地方 很多銀行通常會為了要滿足不同客群 會推出很多App讓使用者下載 每次
Thumbnail
在幣圈,常聽到一句話——「珍愛生命,遠離合約」。這句話可不是空穴來風。虛擬貨幣合約交易,因其高槓桿和高風險,吸引了無數投資人進場,也讓許多人在瞬間失去所有資本。本文將深入探討什麼是虛擬貨幣合約交易、其優勢和風險,並引導讀者在進場前做出慎重考慮。 什麼是虛擬貨幣合約交易? 虛擬貨幣合約交易指的是
分佈式帳本是區塊鏈技術不可或缺的一部分,它通過將數據分散儲存於多個節點,提升數據的安全性及可信度。區塊鏈的共識機制決定交易的有效性及節點的權限運作。本文對不同共識機制,如工作量證明(PoW)和權益證明(PoS)進行探討,並分析其各自的優缺點及在實際應用中的潛力。
Thumbnail
智能合约和区块链是当今社会最热门的话题之一,智能合约钱包是指用合约账户作为地址的钱包,是基于智能合约而不是外部账户的钱包,那么,智能合约钱包和区块链的关系是什么?一样安全吗?本文将为大家详细介绍 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20% 手续费返佣
0. 大綱Outline 以太坊交易 發起交易 與智能合約互動 receive & fallback function 1. 舊以太坊交易 Ethereum Gas Tracker - 7 Gwei - Etherscan //交易技術, 表示特定帳戶的交易數量,是計數器, 每發一筆交