iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 2
0
Blockchain

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

Day02 - Solidity 新版新增的關鍵字跟保留字

  • 分享至 

  • xImage
  •  

0.4 升到 0.5 是一個很大的版本耀進,多到 Breaking Changes 可以寫出一個滿滿一頁真是不簡單啊。在此僅列出幾個我覺得重要的,如果需要查文完整的變動資訊,可以從 Solidity v0.5.0 Breaking Changes 查詢。

calldata

Explicit data location for all variables of struct, array or mapping types is now mandatory. This is also applied to function parameters and return variables.

  • 強制(mandatory)所有 struct、array、mapping 型別的變數,要明確的存放位置 (Explicit data location)
  • 這個規則也適用於函式參數 (function parameters) 跟回傳變數 (return variables)

範例一

uint[] x = m_x

必須要變成

uint[] storage x = m_x

範例二

function f(uint[][] x)

必須要變成

function f(uint[][] memory x)
// 或
function f(uint[][] storage x)

constructor

建構子的使用方式在舊版時,若函式名稱跟合約名稱一致,就視為建構子的舊式寫法,已經完全不支援了。

pragma solidity ^0.4.18;

contract MyContract {
   function MyContract() public {

   }
}

v.0.5 之後,需要明確的使用 constructor 關鍵字。

pragma solidity >=0.4.22 <0.6.0;

contract MyContract {
    constructor() public { owner = msg.sender; }
    address payable owner;
}

新增的保留的關鍵字

  • alias
  • apply
  • auto
  • copyof
  • define
  • mmutable
  • implements
  • macro
  • mutable
  • override
  • partial
  • promise
  • reference
  • sealed
  • sizeof
  • support
  • typedef
  • unchecked

資料來源


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

尚未有邦友留言

立即登入留言