Solidity is een hoogwaardige, objectgeoriënteerde en gecompileerde programmeertaal die gebruikt wordt voor het schrijven van slimme contracten en de implementatie van Dapps op verschillende blockchains. Deze programmeertaal heeft net als andere programmeertalen zijn eigen gegevenstypen en datastructuren, met een andere syntax en toepassing. In deze tutorial worden enkele van de meest gebruikte datatypes en datastructuren in Solidity besproken.
Aard van soliditeitsgegevenstypen
Solidity is een sterk getypeerde en statisch getypte taal. Dit betekent dat de programmeur het gegevenstype van elke variabele moet aangeven voordat de code wordt gecompileerd (compilatietijd). Het gegevenstype van een variabele kan niet worden gewijzigd of geconverteerd naar een ander gegevenstype binnen het programma. Solidity deelt, net als andere programmeertalen, de gegevenstypen in twee categorieën: waarde-typen en referentietypen.
1. Waardetypen in degelijkheid
Een variabele van een waarde-type is een variabele die gegevens rechtstreeks opslaat in het stapel aan zichzelf toegewezen geheugen. Dit type wordt op waarde doorgegeven en wordt gekopieerd bij toewijzing aan een nieuwe variabele of argument bij een functie. Wijzigingen in nieuwe kopieën hebben geen invloed op de oorspronkelijke gegevens.
i. Gehele getallen
Het integer-gegevenstype in Solidity wordt gebruikt om gehele getallen op te slaan. Het is verder gegroepeerd in int en uint, die respectievelijk worden gebruikt voor ondertekende en niet-ondertekende gehele getallen. Een ondertekend geheel getal kan zowel positieve als negatieve gehele getallen bevatten, terwijl een niet-ondertekend geheel getal alleen positieve gehele getallen kan bevatten.
ii. Bytes
Bytes in Solidity zijn byte-arrays met een vaste grootte die een reeks bytes bevatten. De lengte van de byte-array wordt gedefinieerd aan de voorkant van de bytes, zoals in bytes1 tot bytes32. Het nummer is gelijk aan het aantal tekens dat de bytearrayvariabele kan bevatten.
2. Booleans
Booleans in Solidity worden aangeduid met de bool-trefwoord en accepteren slechts twee waarden: true en false.
3. Adressen
Het adres is een speciaal gegevenstype in Solidity dat in staat is om Ether van en naar het adres te ontvangen en te verzenden. Adressen zijn 20 bytes groot en bevatten 42 tekens. Ze zijn ook niet-hoofdlettergevoelige hexadecimale cijfers die worden gegenereerd op basis van de Keccak-256 hasj van de publieke sleutel. Adreswaardetypen zijn verder onderverdeeld in functie-address en address-payable.
4. Opsommingen
Enum-gegevenstypen stellen ontwikkelaars in staat om door de gebruiker gedefinieerde gegevenstypen te maken. De door de gebruiker gedefinieerde gegevens zijn namen die zijn toegewezen aan een integrale constante waarde die begint bij nul.
Referentietypen in Solidity (gegevensstructuur)
Een variabele van het referentietype is er een die de locatie (geheugenadres) van hun gegevens opslaat op de Heap geheugen en ze delen hun gegevens niet rechtstreeks. Wijzigingen aan de referentiegegevens zijn altijd van invloed op de oorspronkelijke gegevens. Voorbeelden van referentietypen in Solidity zijn strings, structs, arrays en mapping.
1. Tekenreeks
De string-type is een reeks tekens en kan zowel als letterlijke tekenreeks met enkele aanhalingstekens en dubbele aanhalingstekens worden gebruikt.
2. Constructies
De struct gegevenstype is een referentiegegevenstype dat kan worden gebruikt om een structuur van andere gegevenstypen te maken. Een struct kan zowel het waarde- als het referentietype bevatten, maar geen struct op zichzelf. Een struct kan worden gemaakt in Solidity met behulp van de onderstaande syntaxis:
struct <Struct_Name> { <data_type> <variable_name>; }
3. Arrays
Een array is een verzameling variabelen met hetzelfde gegevenstype. Ze worden opgeslagen op een continue geheugenlocatie, waarbij elk array-item een unieke index heeft. Array in Solidity kan een vaste of dynamische grootte hebben en elk array-item kan worden doorzocht op basis van zijn unieke index. Een dynamische array kan worden gemaakt in Solidity met behulp van de onderstaande syntaxis:
<datatype()> <variable_name> =…