Solc
solc-v0.6.0: TypeError: Operator - 與類型 tuple() 和 int_const 1 不兼容
我在 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; } }