Solidity
松露的加工
以下是我的程式碼
pragma solidity ^0.4.2; contract DappToken { //Constructor // set no of Tokens // Read the total number of Tokens uint256 public totalSupply; function DappToken () public { totalSupply = 10000000; } }
現在我要與 Truffle 互動 1) 我已經完成了 Truffle 遷移
- 在 Truffle 控制台中,我使用了 DappToken.deployed().then(function(i) {token = i ;})
3)deployed() 返回一個承諾,然後回電(如果我錯了,請糾正我)
4)接下來我用
token.totalSupply { [Function] call: [Function], sendTransaction: [Function], request: [Function: bound ], estimateGas: [Function] }
// 它顯示以下輸出
totalSupply 是我給出的變數的名稱,但它在方括號中顯示 Function 任何人都可以解釋松露如何在內部編譯以及為什麼它顯示為 Function 我嘗試 了 token.DappToken.totalSupply它顯示我認為的錯誤它將進入合約內部並呼叫變數
Solidity 不直接公開變數,但它創建了一個公共的 getter 函式。
您的範例將像這樣。
contract DappToken { uint256 public _totalSupply; function DappToken () public { _totalSupply = 10000000; } function totalSupply() public view returns (uint256) { return _totalSupply; } }
要獲得總供應量,您必須像正常函式一樣進行呼叫。
token.totalSupply().then((result) => { console.log(result); } )
這是文件。我認為您需要在類似於以下範例的
token.totalSupply
內部呼叫:then()
var account_one = "0x1234..."; // an address var meta; MetaCoin.deployed().then(function(instance) { meta = instance; return meta.getBalance.call(account_one, {from: account_one}); }).then(function(balance) { // If this callback is called, the call was successfully executed. // Note that this returns immediately without any waiting. // Let's print the return value. console.log(balance.toNumber()); }).catch(function(e) { // There was an error! Handle it. })