Arvotyypit
uint, address, bool, bytes.
Arvotyypit on ilmainen Web3:n ja DApp-sovellusten kehityksen perusteet-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Web3:n ja DApp-sovellusten kehityksen perusteet-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Web3:n ja DApp-sovellusten kehityksen perusteet-kurssilla on yhteensä 4 oppituntia.
Mitä arvotyypit ovat?
Solidityn arvotyypit sisältävät datansa suoraan, ja ne kopioidaan aina, kun ne sijoitetaan muuttujaan tai välitetään funktiolle.
Tämä eroaa viitetyypeistä (taulukot, struct-rakenteet, mapping-rakenteet), jotka viittaavat jaettuun sijaintiin. Arvotyyppejä ovat bool, kokonaisluvut, address ja kiinteän kokoiset bytes-tyypit.
- Kopioidaan aina sijoituksen yhteydessä
- Tallennetaan tiiviisti
- Ennakoitava gas-kustannus
Totuusarvot
bool-tyyppi sisältää joko arvon true tai false. Se on vertailu- ja logiikkaoperaattoreiden tulos.
Solidity tukee operaattoreita ! (ei), && (ja) ja || (tai). Logiikkaoperaattorit käyttävät oikosulkulaskentaa, kuten useimmissa ohjelmointikielissä.
<code>bool isActive = true;
bool hasPaid = false;
bool ready = isActive && !hasPaid;</code>Etumerkittömät kokonaisluvut
uint tallentaa epänegatiivisia kokonaislukuja. uint on alias tyypille uint256.
Voitte valita pienempiä kokoja 8 bitin välein: uint8, uint16, ... aina tyyppiin uint256 asti. Pienemmät tyypit voivat säästää tallennustilaa, kun ne pakataan samaan struct-rakenteeseen.
<code>uint256 balance = 1000;
uint8 smallCount = 255; // max value for uint8</code>Etumerkilliset kokonaisluvut
int tallentaa arvoja, jotka voivat olla negatiivisia tai positiivisia. int on alias tyypille int256.
int8-tyypin arvoalue on -128–127. Käyttäkää etumerkillisiä kokonaislukuja vain, kun negatiiviset arvot ovat aidosti mahdollisia, sillä niitä on helppo käyttää väärin.
<code>int256 temperature = -15;
int8 delta = 100;</code>Ylivuotojen suojaus
Solidityn versiosta 0.8.0 alkaen aritmeettiset operaatiot kumoutuvat ylivuodon ja alivuodon yhteydessä automaattisesti. Ette enää tarvitse SafeMath-kirjastoa perussuojaukseen.
Jos haluatte tarkoituksella käyttää kiertävää laskentaa gas-kustannusten säästämiseksi, sijoittakaa laskutoimitus unchecked-lohkoon.
<code>uint8 x = 255;
// x + 1 would revert (overflow)
unchecked {
x = x + 1; // wraps to 0
}</code>address-tyyppi
address sisältää 20 tavun pituisen Ethereum-tilin tunnisteen. Se voi viitata lompakkoon (EOA) tai sopimukseen.
address-tyyppi tarjoaa jäseniä, kuten .balance (wei-yksikköinä), sekä metodeja, kuten .transfer() ja .send().
<code>address owner = 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4;
uint256 bal = owner.balance;</code>address ja address payable
Tavallinen address ei voi vastaanottaa Etheriä suoraan. Varojen lähettämiseen tarvitaan address payable, joka lisää käyttöön .transfer()- ja .send()-metodit.
Voitte muuntaa tyypit toisikseen eksplisiittisesti käyttämällä payable(addr).
<code>address recipient = msg.sender;
address payable wallet = payable(recipient);
wallet.transfer(1 ether);</code>Kiinteän kokoiset tavut
Solidity tarjoaa kiinteän kokoisia tavutaulukoita tyypeistä bytes1–bytes32. Ne ovat arvotyyppejä ja dynaamista bytes-tyyppiä edullisempia, kun pituus tunnetaan etukäteen.
Ne sopivat hasheille, tunnisteille ja lyhyelle kiinteän kokoiselle datalle.
<code>bytes32 hash = keccak256(abi.encodePacked('hello'));
bytes1 firstByte = hash[0];</code>Enumeraatiot
enum määrittelee mukautetun tyypin, jolla on ennalta määrätty joukko nimettyjä vakioita. Sisäisesti kukin arvo on pieni uint, joka alkaa arvosta 0.
Enumeraatiot tekevät tilakoneista selkeämpiä, esimerkiksi tilauksen tilan kuvaamisessa.
<code>enum Status { Pending, Shipped, Delivered }
Status public current = Status.Pending;
function ship() public {
current = Status.Shipped;
}</code>Literaalit ja yksiköt
Solidity tarjoaa käteviä yksikköliitteitä. Ether-yksiköt ovat wei, gwei ja ether. Aikayksiköt ovat seconds, minutes, hours, days ja weeks.
1 ether vastaa arvoa 10**18 wei.
<code>uint256 fee = 1 ether; // 1000000000000000000 wei
uint256 timeout = 2 days; // 172800 seconds</code>Oletusarvot
Solidityssa ei ole arvoa null. Jokaisella arvotyypillä on nollaoletusarvo: uint on 0, bool on false ja address on nollaosoite 0x0...0.
Nollaosoitteen tarkistaminen on yleinen suojakeino.
<code>address public admin; // defaults to address(0)
function setAdmin(address a) public {
require(a != address(0), 'zero address');
admin = a;
}</code>Pikatarkistus
Testatkaa, miten hyvin ymmärrätte Solidityn arvotyypit.
Kertaus
Opitte Solidityn keskeiset arvotyypit:
booltrue/false-logiikkaa vartenuint/int, joissa on sisäänrakennettu ylivuotosuojaus versiosta 0.8.0 alkaenaddressjaaddress payabletilejä ja siirtoja varten- Kiinteän kokoiset
bytesN-tyypit,enumsekä yksikköliteraalit, kuten1 ether
Muistakaa: arvotyypit kopioidaan, ja jokaisella tyypillä on nollaoletusarvo.
Opi Web3:n ja DApp-sovellusten kehityksen perusteet tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 29
- Oppitunnit
- 105
Usein kysytyt kysymykset
Onko oppitunti ”Arvotyypit” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Web3:n ja DApp-sovellusten kehityksen perusteet-oppimispolun 3 oppituntia, myös oppitunnin “Arvotyypit”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Web3:n ja DApp-sovellusten kehityksen perusteet-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Arvotyypit”?
uint, address, bool, bytes. Harjoittelet Web3:n ja DApp-sovellusten kehityksen perusteet-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Web3:n ja DApp-sovellusten kehityksen perusteet-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Web3:n ja DApp-sovellusten kehityksen perusteet-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Arvotyypit”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Web3:n ja DApp-sovellusten kehityksen perusteet-oppitunnilla?
Kyllä. Jokainen Web3:n ja DApp-sovellusten kehityksen perusteet-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.