您好,登錄后才能下訂單哦!
本篇內容主要講解“solidity開發以太坊智能合約時memory和storage有什么不同”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“solidity開發以太坊智能合約時memory和storage有什么不同”吧!
在使用solidity開發以太坊智能合約時,可以為變量聲明memory和storage關鍵字。那么,它們有什么不同之處?如果在聲明合約變量時沒有使用memory關鍵字,Solidity會嘗試在storage中存儲這個變量。
根據Solidity首席工程師Chriseth的說法:“你可以把storage想像成一個大數組,它有自己的結構,這個結構是由你的合約中的狀態變量所決定的,因此在運行時不能改變”。
這就是說,storage的結構是在合約部署創建時,根據你的合約中狀態變量的聲明,就固定下來了,并且不能在將來的合約方法調用中改變這個結構。但是,storage中的內容是可以通過交易來改變的。這些交易調用因此將修改合約的狀態,這也是為什么合約中的變量被稱為狀態變量的原因。因此在合約層面聲明的一個uint8類型的storage變量, 它的值可以修改為任何0-255之間的有效uint8值,但是該變量在storage結構中的位置始終不會變化。
如果你在合約函數中聲明變量時沒有使用memory關鍵字,那么solidity將會嘗試使用storage結構,目前來講,這樣做可以通過編譯,但是可能導致不可預期的結果。memory關鍵字告訴solidity應當在該函數運行時為變量創建一塊空間,使其大小和結構滿足函數運行的需要。
在合約層面你不能為變量應用memory關鍵字。
到此,相信大家對“solidity開發以太坊智能合約時memory和storage有什么不同”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。