Solidity
將數據列印到控制台的 Solidity 語句是什麼?
有時,能夠在 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";
- https://hardhat.org/tutorial/debugging-with-hardhat-network.html
- https://remix-ide.readthedocs.io/en/latest/hardhat_console.html
import "hardhat/console.sol";
已棄用的答案
Solidity 中不存在列印。請改用手冊中指示的logX 語句。