From af5279717e0b4ba8d98718615770dba92dfe7043 Mon Sep 17 00:00:00 2001 From: PabloCGL <50929773+PabloCGL@users.noreply.github.com> Date: Sun, 20 Dec 2020 22:12:20 +0100 Subject: [PATCH] Update public_vars.md --- de/1/public_vars.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/de/1/public_vars.md b/de/1/public_vars.md index 18b984d..f168e91 100644 --- a/de/1/public_vars.md +++ b/de/1/public_vars.md @@ -1,6 +1,36 @@ + +# Chapter 9: Öffentliche Variablen + +Speichervariablen can man bei der Deklaration als `public` (öffentlich) bezeichnen: + +```vyper +publicName: public(String[64]) +``` + +Der Compiler erstellt dann automatisch getter-Funktionen für alle öffentlichen Speichervariablen. Diese getter sind NICHT im Code zu lesen, sondern werden erst bei der Kompilierung generiert. + +Für das obere Beispiel wird der Compiler dann automatisch eine Funktion mit dem Namen `publicName` erstellen, die keine Argumente nimmt und den Wert der Zustandsvariable als einen `String[64]` zurückgibt. + +## Stellen Sie sich auf die Probe + +Wir brauchen eine öffentliche Speichervariable, die die Anzahl der vom Contract generierten Pokemons verfolgt. + +1. Deklarieren Sie eine `public` Variable mit dem Namen `totalPokemonCount` und dem Typ `uint256`. +2. Ersetzen Sie den Key `0` im Mapping `pokemonList` in der Funktion `_createPokemon` mit der Speichervariable `totalPokemonCount`. + Vergessen Sie nicht, die `self` Umgebungsvariable zu benutzen, um von der Funktion heraus auf die Speichervariable zu greifen. +3. Nutzen Sie die `self` Umgebungsvariable, um in der `_createPokemon` Funktion den `totalPokemonCount` um 1 zu erhöhen. Nutzen Sie den Operator `+=`, damit der Code sauberer aussieht: + + ```vyper + # addiert 1 zum erhaltenen Parameter + @external + def addOne(number: uint256): + # Wir nutzen += um die Zahl um 1 zu erhöhen + number += 1 + ``` + #### ** Template **