Solidity

msg.sender 無法辨識

  • September 24, 2022

我收到以下程式碼錯誤

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7 ;

contract Variables {
  //Global variables
  uint public pubInt = 25;
  bool public truth = false;
  string public msg = "Hello World";

  function dosomething() public{
      uint8 v = 30;
      address sender = msg.sender;
  }

}

TypeError:在字元串儲存參考中進行參數相關查找後,成員“發件人”未找到或不可見。–> Web3/Variables.sol:12:25: | 12 | 地址發件人 = msg.sender;

任何幫助是極大的讚賞。

您正在使用保留關鍵字聲明狀態變數msg

string public msg = "Hello World";

你不想那樣做。您不應該嘗試聲明是 Solidity 語言的保留關鍵字的變數,例如msg全域可用的。因此,您實際上是在“覆蓋”它或遮蔽它。

最好像這樣聲明:

string public message = "Hello World";

整個程式碼如下所示:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7 ;

contract Variables {
  //Global variables
  uint public pubInt = 25;
  bool public truth = false;
  string public message = "Hello World";

  function dosomething() public {
      uint8 v = 30;
      address sender = msg.sender;
  }

}

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