Solc

solc-v0.6.0: TypeError: Operator - 與類型 tuple() 和 int_const 1 不兼容

  • December 31, 2019

我在 solc 版本上遇到此錯誤0.6.0

基本上我返回列表的長度並從中減去 1,該值將分配給一個uint變數。

通常,此命令用於在推送後返回列表的長度:

uint length = list.push(Struct({val: value}))


TypeError: Operator - not compatible with types tuple() and int_const 1
uint32 value = uint32(list.push(Interval({endpoint: startTime})) - 1);

我沒有收到此錯誤或solc-v0.5.*. 我覺得元組不再返回它們的長度。

**$$ Q $$**我該如何解決這個錯誤?

是的,list.push將不再返回它的長度。

https://solidity.readthedocs.io/en/v0.6.0/060-break-changes.html#how-to-update-your-code

更改uint length = array.push(value)array.push(value);。可以通過 array.length 訪問新長度。

因此,現在您必須“手動”執行此操作:

pragma solidity 0.6.0;

contract Test {
   struct Interval {
       uint endpoint;
   }

   Interval[] public list;

   function addItemAndGetLengthMinusOne() public returns(uint) {
       list.push(Interval({endpoint: now}));
       uint value = list.length - 1;

       return value;
   }
}

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