Solidity

將數據列印到控制台的 Solidity 語句是什麼?

  • September 21, 2021

有時,能夠在 Geth 控制台中查看變數值的字元串表示形式會非常有幫助,例如函式中的參數值。我可以以某種方式將它們列印到 Geth 控制台嗎?

您很可能正在尋找Events。它們不僅有助於調試,而且在正常的生產程式碼中也很有用。

事件被聲明為函式,如下所示:

event VoteCast(address voter, uint votes, bool inFavor);

然後在某個地方(例如,在計票功能中):

function vote(bool inFavor) {
   var votes = shares[msg.sender];
   // ...
   emit VoteCast(msg.sender, votes, inFavor);
}

在 javascript 中,合約對像有一個事件方法,當事件發生時可以使用它來讀取事件。事實上,它可以讀取過去發生的事件。

var voteCast = someContract.voteCast();
voteCast.watch(function(err, result) {/* some callback */});
// Alternately, to get the events all at once.
voteCast.get(function(err, result) /* some other callback* /)

事件有許多怪癖,在這裡無法詳細介紹。儘管如此,它們是高級 dapp 工作不可或缺的一部分。

編輯:logX已棄用並且不會出現在 Solidity 0.8+ 文件中。下面的範例僅在使用 Solidity 至 0.7.6 版本時才有效,現在應該被事件或 Solidity 庫替換,以便console.log()在您的合約程式碼中使用。

自從我第一次回答以來,許多項目都改善了調試體驗:

import "truffle/Console.sol";
import "hardhat/console.sol";

已棄用的答案

Solidity 中不存在列印。請改用手冊中指示的logX 語句。

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