Värdetyper
uint, address, bool, bytes
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:
boolför logik med sant/falsktuint/intmed inbyggt skydd mot spill sedan 0.8.0addressochaddress payableför konton och överföringar- Fasta
bytesN,enumoch enhetsliteraler som1 ether
Kom ihåg: värdetyper kopieras, och varje typ har ett nollvärde som standard.
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.