solidity智慧合約[30]-值拷貝
阿新 • • 發佈:2018-11-25
狀態變數的值拷貝問題
如下例子中,將狀態變數a的值賦值給狀態變數b。a與b都是以太坊虛擬機器storage中不同的兩個空間,所以當呼叫change方法修改b的值的時候,不會影響到a空間中的值。
1 |
uint public a = 100; |
函式體內部變數的值拷貝
在函式體內部,將狀態變數a的值賦值給狀態變數b。a與b都是以太坊虛擬機器棧中不同的兩個空間。所以當修改b的值的時候,不會影響到a空間中的值。
1 |
function change2() public pure returns(uint,uint){ |
函式引數的值拷貝問題
在下面的例子中,test函式呼叫了change函式,並傳遞了引數a。 傳遞的引數a會賦值給以太坊虛擬機器memory空間中的變數num。由於函式的引數num和狀態變數a是不同的兩個空間。僅僅是將a的值賦值給了num。所以對於變數num值的修改不會改變a變數的值
1 |
uint public a = 100; |
完整程式碼
1 |
pragma solidity ^0.4.23; |
本文連結: https://dreamerjonson.com/2018/11/22/solidity-30-value-copy/
版權宣告: 本部落格所有文章除特別宣告外,均採用 CC BY 4.0 CN協議 許可協議。轉載請註明出處!