Solidity

比較 Solidity 中的記憶體指針

  • June 22, 2018

有沒有辦法比較 Solidity 中的指針?

我有兩個局部變數:

uint256[] memory a = new uint256[](256);
uint256[] memory b = a;

如果我嘗試a == b我得到這個編譯器錯誤:

TypeError:運算符與類型和==不兼容uint256[] memory``uint256[] memory

一種可能的解決方案是使用eq內聯彙編中的指令:

uint256[] memory a = new uint256[](256);
uint256[] memory b = a;
bool aEqualsB;
assembly {
   aEqualsB := eq(a, b)
}
// aEqualsB now contains the value: true

b = new uint256[](256);
assembly {
   aEqualsB := eq(a, b)
}
// aEqualsB now contains the value: false

引用自:https://ethereum.stackexchange.com/questions/51846