Skip to content

Files

Latest commit

 

History

History
75 lines (52 loc) · 2.17 KB

arrays.md

File metadata and controls

75 lines (52 loc) · 2.17 KB
title actions material
Polia
checkAnswer
hints
editor
language startingCode answer
sol
pragma solidity ^0.4.19; contract ZombieFactory { uint dnaDigits = 16; uint dnaModulus = 10 ** dnaDigits; struct Zombie { string name; uint dna; } // start here }
pragma solidity ^0.4.19; contract ZombieFactory { uint dnaDigits = 16; uint dnaModulus = 10 ** dnaDigits; struct Zombie { string name; uint dna; } Zombie[] public zombies; }

Keď chceme vytvoriť kolekciu niečoho, možeme použit polia. V solidity existujú dva druhy polí: fixné polia a dynamické_ polia:

// Toto pole ma fixnú dĺžku 2 prvkov:
uint[2] fixedArray;
// iné fixné pole, toto môže udržovať 5 reťazcov:
string[5] stringArray;
// dynamické pole - nemá presnú fixnú dĺžku, môže veľkosťou narastať
uint[] dynamicArray;

Môžeš taktiež vyvoriť pole štruktúr (structs). Napríklad použitím štruktúry Person z predošlej lekcie:

Person[] people; // dynamické pole, môžeme do neho pridávať nové prvky

Spomínaš si na to, že stavové premenné su permanentne uložené na blockchaine? To znamená že vytváranie takéhoto dynamického poľa nám môže slúžiť na ukladanie štrukturovaných dát v našom kontrakte. Je to ako taká databáza.

Verejné (public) polia

Pole môžeš deklarovať ako public. V takom prípade pre ne Solidity automaticky vytvorí getter metódu. Syntax je nasledovná:

Person[] public people;

Iné kontrakty by potom mohli dáta z toho poľa čítať (no nie do neho zapisovať). Je to užitočný programovací vzor pre ukladanie dát do našeho kontraktu.

Vyskúšaj si to sám

Chceme aby naša aplikácia udržiavala informáciu o armáde všetkých zombie. Ďalej chceme, aby ostatné aplikácie taktiež mali k našim zombie prístup. Zombie by mali byť verejne prístupní.

  1. Vytvor verejné public pole Zombie štruktúr (structs) s názvom zombies.