Solidity
當你從 Javascript 測試中呼叫 solidity 函式時,你應該使用 call()
假設我的可靠性程式碼是
contract MetaCoin { uint256 public balance = 0; function getBalance() public view returns(uint) { return balance } }
假設我想在我的 javascript 測試中呼叫 getBalance 函式;我有兩種方法可以做到
const MetaCoin = artifacts.require("MetaCoin"); const metaCoinInstance = await MetaCoin.deployed(); // Way 1 using call const metaCoinBalance = (await metaCoinInstance.getBalance.call()).toNumber(); // Way 2 without using call const metaCoinBalance = (await metaCoinInstance.getBalance()).toNumber();
哪種方式更好,兩種呼叫方式有什麼區別?
我會說這主要是一種偏好,但我會選擇這個
.call(...)
版本。效果完全相同,但.call(...)
版本清楚地向讀者表明這是一個不修改狀態的常量方法呼叫,而您將使用它.send(...)
來呼叫一個確實修改狀態的非常量方法。