From 32b6c111565067b08ea3373a92888eab5ee8981d Mon Sep 17 00:00:00 2001 From: PabloCGL <50929773+PabloCGL@users.noreply.github.com> Date: Sun, 20 Dec 2020 22:04:38 +0100 Subject: [PATCH] Update structs.md --- de/1/structs.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/de/1/structs.md b/de/1/structs.md index 228bd30..bffad77 100644 --- a/de/1/structs.md +++ b/de/1/structs.md @@ -1,6 +1,43 @@ +# Chapter 4: Structs + +Ab und zu braucht man Datentypen, die etwas komplexer sind. Hierfür bietet Vyper `structs`: + +```vyper +struct Person: + age: uint256 + name: String[64] +``` + +Strukturen ermöglichen komplexe Datentypen, die mehrere Variablen zusammenbündeln. + +> Achtung! Wir haben gerade einen neuen Datentyp eingeführt: Den String. Bei Strings mit fest angegebener Länge darf die gespeicherte Zeichenkette diese nicht überschreiten, doch aber kürzer sein. +> +> ```vyper +> testString: String[100] = "Hello World!" +> +> Dieser `testString` kann bis zu 100 Zeichen speichern. Wir haben mit `"Hello World!"` aber nur 12 davon benutzt. + +Vyper (wie Python auch) nutzt Einrückung, um Codeblöcke zu strukturieren. Python nutzt für die Einrückung Whitespace-Zeichen: alle Anweisungen mit der selben Verschiebung nach rechts gehören zum selben Codeblock. Wenn ein einzelner Codeblock weiter unterteilt werden muss, wird der Sub-Block einfach weiter nach rechts eingerückt. +Zum Beispiel: Beim unserem Personen-struct oben sind Alter und Name um den selben Abstand eingerückt, also gehören sie zum selben Codeblock. + +## Stellen Sie sich auf die Probe + +Zeit, ein Paar Pokemons für unsere App zu generieren! Die Pokemons sollen verschiedene Eigenschaften haben, also ist ein struct die perfekte Lösung dafür. + + +1. Erstellen Sie ein `struct` mit dem Namen `Pokemon`. + +2. Unser Pokemon-struct wird 5 Eigenschaften haben: + - `name` (`String[32]`) + - `dna` (`uint256`) + - `HP` (`uint256`) + - `matches` (`uint256`) + - `wins` (`uint256`) + + #### ** Template ** [embedded-code](../../assets/1/1.4-template-code.vy ':include :type=code embed-template')