Ich habe einen einfachen Vertrag Foo
, der in einem Ganache-Netzwerk bereitgestellt wird.
pragma solidity ^0.4.18;
contract Foo {
uint storageData;
function set(uint x) public {
storageData = x;
}
function get() constant public returns (uint) {
return storageData;
}
}
Wenn ich jetzt mit ihm interagieren möchte, truffle console
setze ich zuerst den Wert
truffle(development)> Foo.at("0x4d4337B075a442cF3351Fa11c425C350cE2984F5").set(123)
Frage 1: Dann habe ich versucht, diesen Wert abzurufen, aber es wird eine BignNumber
. Warum ist es keine ganze Zahl?
truffle(development)> Foo.at("0x4d4337B075a442cF3351Fa11c425C350cE2984F5").get.call()
BigNumber { s: 1, e: 0, c: [ 123 ] }
Frage 2: Wie können Sie es in eine Ganzzahl oder einen String umwandeln?
truffle(development)> Foo.at("0x4d4337B075a442cF3351Fa11c425C350cE2984F5").get.call().toNumber()
TypeError: Foo.at(...).get.call(...).toNumber is not a function
Versucht console.log
es nach einem .toNumber
, es druckt den richtigen Wert 123
, aber warum druckt es undefined
auch ein?
truffle(development)> Foo.at("0x4d4337B075a442cF3351Fa11c425C350cE2984F5").get.call().then(a => console.log(a.toNumber()))
123
undefined
Einige Hinweise:
Versuchen
var n;
var foo = Foo.at("0x4d4337B075a442cF3351Fa11c425C350cE2984F5");
foo.get().then(function(response) {
n = response.toString(10);
console.log(n);
}
Ich habe es nur zur Veranschaulichung skizziert, also habe ich hoffentlich nicht die Syntax vermasselt.
Ich hoffe es hilft.
Justin
toNumber()
:count = await app.getCount; count.toNumber()