Grunderna i Web3- och DApp-utveckling · Lektion

Värdetyper

uint, address, bool, bytes

Lektion 1 av 413 steg

Värdetyper är en gratis lektion i Grunderna i Web3- och DApp-utveckling på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Grunderna i Web3- och DApp-utveckling, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Grunderna i Web3- och DApp-utveckling innehåller totalt 4 lektioner.

Vad är värdetyper?

Värdetyper i Solidity innehåller sina data direkt och kopieras när de tilldelas till en variabel eller skickas till en funktion.

Detta skiljer sig från referenstyper (arrayer, structs, mappings), som pekar på en gemensam plats. Värdetyper omfattar bool, heltal, address och bytes med fast storlek.

  • Kopieras alltid vid tilldelning
  • Lagrade kompakt
  • Förutsägbar gaskostnad

Booleska värden

Typen bool innehåller antingen true eller false. Den är resultatet av jämförelseoperatorer och logiska operatorer.

Solidity stöder ! (inte), && (och) och || (eller). Logiska operatorer kortsluter, precis som i de flesta språk.

<code>bool isActive = true;
bool hasPaid = false;
bool ready = isActive && !hasPaid;</code>

Osignerade heltal

uint lagrar icke-negativa heltal. uint är ett alias för uint256.

Ni kan välja mindre storlekar i steg om 8 bitar: uint8, uint16, ... upp till uint256. Mindre typer kan spara lagringsutrymme när de packas tillsammans i en struct.

<code>uint256 balance = 1000;
uint8 smallCount = 255; // max value for uint8</code>

Signerade heltal

int lagrar värden som kan vara negativa eller positiva. int är ett alias för int256.

En int8 sträcker sig från -128 till 127. Använd signerade heltal endast när negativa värden faktiskt är möjliga, eftersom de lätt kan användas fel.

<code>int256 temperature = -15;
int8 delta = 100;</code>

Skydd mot spill

Sedan Solidity 0.8.0 avbryts aritmetiska operationer automatiskt vid overflow och underflow. Ni behöver inte längre SafeMath för grundläggande säkerhet.

Om ni medvetet vill ha omslagsbeteende för att spara gas, placerar ni beräkningen i ett unchecked-block.

<code>uint8 x = 255;
// x + 1 would revert (overflow)
unchecked {
    x = x + 1; // wraps to 0
}</code>

Typen address

En address innehåller en 20 byte lång identifierare för ett Ethereum-konto. Den kan hänvisa till en plånbok (EOA) eller ett kontrakt.

Typen address tillhandahåller medlemmar som .balance (i wei) och metoder som .transfer() och .send().

<code>address owner = 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4;
uint256 bal = owner.balance;</code>

address jämfört med address payable

En vanlig address kan inte ta emot Ether direkt. För att skicka pengar behöver ni address payable, som lägger till .transfer() och .send().

Ni konverterar uttryckligen mellan dem med payable(addr).

<code>address recipient = msg.sender;
address payable wallet = payable(recipient);
wallet.transfer(1 ether);</code>

Bytes med fast storlek

Solidity erbjuder bytearrayer med fast storlek från bytes1 till bytes32. Dessa är värdetyper och är billigare än dynamiska bytes när längden är känd.

De är användbara för hashvärden, identifierare och korta data med fast längd.

<code>bytes32 hash = keccak256(abi.encodePacked('hello'));
bytes1 firstByte = hash[0];</code>

Enumtyper

En enum definierar en anpassad typ med en fast uppsättning namngivna konstanter. Internt är varje värde ett litet uint som börjar på 0.

Enumtyper gör tillståndsmaskiner lättare att läsa, till exempel statusen för en order.

<code>enum Status { Pending, Shipped, Delivered }
Status public current = Status.Pending;

function ship() public {
    current = Status.Shipped;
}</code>

Literaler och enheter

Solidity tillhandahåller praktiska enhetssuffix. Ether-enheter: wei, gwei, ether. Tidsenheter: seconds, minutes, hours, days, weeks.

1 ether motsvarar 10**18 wei.

<code>uint256 fee = 1 ether;       // 1000000000000000000 wei
uint256 timeout = 2 days;    // 172800 seconds</code>

Standardvärden

Solidity har inget null-värde. Alla värdetyper har ett nollvärde som standard: uint är 0, bool är false och address är nolladressen 0x0...0.

Att kontrollera mot nolladressen är ett vanligt skydd.

<code>address public admin; // defaults to address(0)

function setAdmin(address a) public {
    require(a != address(0), 'zero address');
    admin = a;
}</code>

Snabbtest

Testa er förståelse av Soliditys värdetyper.

Sammanfattning

Ni har lärt er de centrala värdetyperna i Solidity:

  • bool för logik med sant/falskt
  • uint/int med inbyggt skydd mot spill sedan 0.8.0
  • address och address payable för konton och överföringar
  • Fasta bytesN, enum och enhetsliteraler som 1 ether

Kom ihåg: värdetyper kopieras, och varje typ har ett nollvärde som standard.

Gratis att börja

Lär dig Grunderna i Web3- och DApp-utveckling med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
29
Lektioner
105

Vanliga frågor

Är lektionen ”Värdetyper” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Grunderna i Web3- och DApp-utveckling, inklusive ”Värdetyper”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Grunderna i Web3- och DApp-utveckling innehåller totalt 4 lektioner.

Vad lär jag mig i ”Värdetyper”?

uint, address, bool, bytes Ni övar på Grunderna i Web3- och DApp-utveckling med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Grunderna i Web3- och DApp-utveckling?

Du behöver inga förkunskaper. Utbildningen i Grunderna i Web3- och DApp-utveckling på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”Värdetyper”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Grunderna i Web3- och DApp-utveckling-lektionen?

Ja. Varje Grunderna i Web3- och DApp-utveckling-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Värdetyper
  2. Referenstyper
  3. Storage jämfört med memory
  4. Konstanter och oföränderliga värden
← Tillbaka till Grunderna i Web3- och DApp-utveckling