Solidity
混音警告 - 是恆定的,但可能不應該是。
我收到下面顯示的程式碼的警告。你能幫我解決這個警告嗎?
警告消息 - “是恆定的,但可能不應該是”
這裡討論了同樣的問題,但沒有得出任何結論。
我認為這是因為
new
創建變數時的關鍵字string abcde
。我已經嘗試了兩個範例契約進行確認。
pragma solidity ^0.4.24; contract Foo { uint256 n = 10; function initArray() public view { uint[10*10] memory result; for (uint i = 0; i < n; i++){ for(uint j = 0; j < n; j++){ result[(i*9)+j]=1; } } } }
對於上述智能合約,remix 不會拋出警告
Is constant but potentially should not be
。pragma solidity ^0.4.24; contract Foo { uint256 n = 10; function initArray() public view { uint[] memory result = new uint[](n*n); for (uint i = 0; i < n; i++){ for(uint j = 0; j < n; j++){ result[(i*9)+j]=1; } } } }
但是,對於上述契約 remix 會引發警告:
Is constant but potentially should not be.
該函式寫入在
babcde[]
別處定義的狀態變數。由於它寫入狀態,只讀pure
修飾符可能是錯誤的。希望能幫助到你。