Solidity

編譯錯誤 - 警告:未使用的局部變數

  • February 4, 2018

我收到一些變數的警告錯誤,例如存款、總付款和持續時間,這些變數是從使用者那裡收款所必需的。

我收到的錯誤是:

警告:未使用的局部變數。

問題:

  • 這是什麼意思?
  • 為什麼付款或費用沒有從使用者餘額中產生?

截圖: 在此處輸入圖像描述 在此處輸入圖像描述

沃林:這個聲明掩蓋了……

發生這種情況是因為您在契約開始時聲明了uint duration變數(參考:Untitled.sol:27),然後在函式中使用相同的變數名稱作為參數。如果您的唯一目的是在該函式中使用它們,那麼您不需要在函式之外聲明它們。否則只需在函式變數中添加下劃線,即 Untitled.sol 文件第 152 行將變數名稱更改為 _duration

警告:未使用的局部變數。

我希望您知道 EVM 需要消耗氣體來執行您的(操作)程式碼。如果您多寫一行,EVM 將消耗一些氣體來執行該語句。並且在創建變數時需要非常小心,因為它會根據數據類型消耗 gas。Solidity 編譯器警告刪除未使用的變數。因為當您執行契約方法時,它會花費。在附近的特徵成本會更多的氣體。所以請刪除未使用的變數,這樣它會減少最終的操作碼,即你的方法的氣體消耗會很低。

這是什麼意思:

這個聲明陰影…

您已經duration在函式之外聲明了名為的變數。第一個聲明是儲存,您可能只想聲明具有不同名稱的新變數,以便在函式執行期間使用它。

未使用的局部變數…

如果您聲明的變數既不使用也不將其儲存在契約的儲存中,那麼您會收到來自 remix 的警告。如果你真的需要這個局部變數,只需在函式內部****使用它們,或者如果你想稍後使用它們,只需通過將這些變數推送到某種數組或映射來更改狀態。

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