Ich versuche es anhand IterableMapping
dieses Beispiels . Ich habe einen Fehler beim Kompilieren des Vertrags nach Truffle:
Erwarteter Bezeichner, habe 'LParen' erhalten
Das ist mein Code:
pragma solidity ^0.4.15;
import "./itMapsLib.sol";
contract User
{
using itMaps for itMaps.itMapUintAddress;
itMaps.itMapAddressUint im_myAddressUintMap;
function addOwner(address _key, uint value) returns (bool){
im_myAddressUintMap.insert(_key, value);
return true;
}
function allSum() returns (uint sum)
{
}
}
Es gibt mehrere Probleme mit Ihrem Code.
Sie kopieren den Funktionsprototyp und fügen ihn ein, anstatt ihn aufzurufen, den Sie verwenden solltenim_myAddressUintMap.insert( key, value);
Und Sie müssen diese Einfügung innerhalb einer Funktion oder innerhalb des Konstruktors vornehmen (Funktion mit dem Namen des Vertrags).
function insert( address key, uint value ) public {
im_myAddressUintMap.insert( key, value );
}
Also sollte der Vertrag so aussehen
zweiter import ist auf remix zu testen
pragma solidity ^0.4.15;
import "./itMapsLib.sol";
//import "https://github.com/szerintedmi/solidity-itMapsLib/itMapsLib.sol";
contract User
{
using itMaps for itMaps.itMapAddressUint;
itMaps.itMapAddressUint im_myAddressUintMap;
function insert ( address key, uint value) public {
im_myAddressUintMap.insert( key, value);
}
}
Bearbeiten : Sie haben Ihren Vertrag bearbeitet. Der letzte Fehler, den Sie haben, ist der falsche Import von using itMaps for itMaps.itMapUintAddress;
IhnenitMapAddressUint
Richard Horrocks
im_myUintUintMap
nirgendwo definiert zu haben (es sei denn, es ist an einer anderen Stelle im Code, die nicht in Ihrem Snippet enthalten ist).Stepan Poperechnyi
Richard Horrocks
im_myUintUintMap
. Diese Variable existiert nicht.im_myUintUintMap.insert()
Sie müssen zu ändernim_myAddressUintMap.insert()
.Richard Horrocks
itMaps.itMapUintUint im_myUintUintMap;
)Stepan Poperechnyi
Richard Horrocks
_key
undvalue
? Sie übergeben sie aninsert()
, aber sie existieren nicht.Stepan Poperechnyi