iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 4
0
Blockchain

有什麼新鮮事發生在 Ethereum系列 第 4

Day04 - 可見度和 mutability

定義函式一定要指定可見度 (visibility)

舊版的規則

函式可以指定為 external、public、internal 或 private 四種可見度,在舊版的規則是如果沒有指定預設為 public。狀態變數不可指定為 external,預設是 internal。

新版的規則

Explicit function visibility is now mandatory. Add public to every function and constructor, and external to every fallback or interface function that does not specify its visibility already.

舊的規則在定義函式 (function) 時不指定範圍,就會預設 internal 的潛規則取消了,在新版函式需要要明確指定可見度 (Visibility)。

編譯錯誤

pragma solidity >=0.5.0 <0.7.0;
interface OldContract {
   function someOldFunction(uint8 a);
   function anotherOldFunction() returns (bool);
}

編譯正常

pragma solidity >=0.5.0 <0.7.0;
interface OldContract {
   function someOldFunction(uint8 a) external;
   function anotherOldFunction() external returns (bool);
}

mutability

新版一定要指定 mutability,以下面的範例,就是指定 memory

編譯錯誤

function f(uint x) public returns (bytes) {

編譯正常

function f(uint x) public returns (bytes memory) {

資料來源


上一篇
Day03 - 編譯器的支援度
下一篇
Day05 - 使用變數方式的更變
系列文
有什麼新鮮事發生在 Ethereum30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言