Cryptomonnaie

Série EOS avancée – Partie 2 – Singletons – Coinmonks – Medium

Série EOS avancée - Partie 2 - Singletons - Coinmonks - Medium


Pour la partie 2 de cette série, nous allons examiner Singletons, tous les codes de cet exemple sont disponibles ici sur GitHub.

Les singletons doivent être utilisés pour stocker l'état du contrat ou comme alternative aux tables à index multiples lorsqu'une seule ligne est requise.

Persistance

Nous allons explorer les singletons comme une méthode permettant de conserver notre contrat. L'utilisation d'un tableau à cette fin constituerait un gaspillage de ressources, car nos données n'occuperaient jamais qu'une seule ligne.

Définir le singleton

Pour cet exemple, nous allons utiliser un singleton pour stocker l'état de configuration de nos contrats. Définissons notre singleton en utilisant une structure. Nous allons utiliser un booléen appelé fermé et nombre_char que nous pouvons utiliser pour limiter la taille des utilisateurs.

struct Config {
bool fermé = faux;
uint32_t char_count = 144;
};

typedef singleton settings_table;

Ensuite, nous allons créer une variable d’espace réservé pour notre instance, la rendant globale dans le contexte de notre contrat.

settings_table config;

Initialiser le Singleton

Nous pouvons initialiser notre singleton chaque fois que nous l’utilisons ou dans notre constructeur de contrats afin qu’il soit disponible pour chaque action de notre contrat. Notre contrat dans cet exemple est nommé singletons, mais vous pouvez appeler cela comme vous le souhaitez.

singletons (action_name self): contrat (self), config (_self, _self) {}

Semblable à la table multi-index, l’initialisation du singleton prend un code de contrat et une portée. Dans cet exemple, nous avons défini le code et la portée sur _soi.

Obtenir des valeurs singleton

Maintenant que notre singleton est initialisé, nous pouvons commencer à interagir avec les valeurs en lisant notre nombre_char valeur et l’imprimer sur la console.

auto state = config.get ();
print (state.char_count);

Et c'est tout! Notre config.get () récupère le singleton que nous avons initialisé plus tôt et l'assigne à notre Etat variable. Maintenant, nous pouvons accéder aux propriétés de notre struct en utilisant la notation par points.

Définir des valeurs singleton

Dans cet exemple, nous mettrons à jour le nombre_char propriété utilisant la fonction membre singleton.set (STRUCT, PAYER). Examinons deux méthodes pour mettre à jour notre singleton.

Méthode 1 - Mise à jour en ligne

La méthode la plus simple consiste à construire notre structure en ligne, en la passant directement à notre fonction set comme nous l'avons définie, comme ceci;

config.set (Config {true, 172}, _self);

Ici nous mettons fermé à vrai et notre nombre_char à 172 en déléguant _soi en tant que payeur pour cette RAM. Cette méthode est propre lorsque votre structure ne contient que quelques propriétés et qu'elle maintient l'ordre des propriétés, mais nous aurons besoin d'une meilleure méthode pour les structures plus grandes.

Méthode 2 - Récupérer et mettre à jour

Ensuite, rouvrons notre contrat en utilisant une méthode de récupération et de mise à jour. Nous allons d'abord obtenir notre courant Config l'état en utilisant le singleton.get () méthode, définissez le fermé valeur, puis définissez à nouveau l'état.

auto state = config.get ();
state.closed = false;
config.set (state, _self);

Et c’est Singletons, simple! Dans la prochaine partie, nous examinerons les index de table multi-index, en mettant l’accent sur l’utilisation d’index secondaires. Assurez-vous de cliquer suivre si vous souhaitez être averti lorsque je partage plus d'exemples.

Show More

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Related Articles

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Close
Close