Web3:n ja DApp-sovellusten kehityksen perusteet · Oppitunti

Arvotyypit

uint, address, bool, bytes.

Oppitunti 1/413 vaihetta

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:

  • bool true/false-logiikkaa varten
  • uint/int, joissa on sisäänrakennettu ylivuotosuojaus versiosta 0.8.0 alkaen
  • address ja address payable tilejä ja siirtoja varten
  • Kiinteän kokoiset bytesN-tyypit, enum sekä yksikköliteraalit, kuten 1 ether

Muistakaa: arvotyypit kopioidaan, ja jokaisella tyypillä on nollaoletusarvo.

Aloita maksutta

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.

Kaikki tämän kurssin oppitunnit

  1. Arvotyypit
  2. Viitetyypit
  3. Tallennus ja muisti
  4. Vakiot ja muuttumattomat arvot
← Takaisin: Web3:n ja DApp-sovellusten kehityksen perusteet