# Tutorium 06 - 24.11.2023
## Vorab Informationen
- Kollektiver [Discord](https://s.narl.io/s/discord-invite) mit Tutorium 05 (Daniel Mironow)
- Dani's-Tutorium: Mi 16:00 - 18:00, Geb. 106, SR 00 007
- Im Discord könnt ihr euch direkt mit uns Tutoren austauschen oder untereinander
- Invite: https://s.narl.io/s/discord-invite
- Es gibt wieder einen
QR-Code:
## Korrektur Blatt 05
- am Samstag, ich hab mich etwas vertan bei der Korrektur
- Punkteverteilung und häufige Fehler werden hier hinzugefügt
### Häufige Fehler
- Type annotation
- `@dataclass` nicht benutzt
- mutieren von erstellten Objekt
## Vorrechnen
1. Python-Game
1. `Vec2`:
2. `add_vecs`:
3. `Item`:
4. `Snake`:
5. `Game`:
6. `turn_direction`:
7. `grow_positions`:
8. `collision`:
9. `generate_item`:
10. `pick_item`:
## Recap - Was ist neu?
### Union-Type und Type Definitionen
- neues `type` Keyword
- mit `|` lassen sich Union-Types definieren
```py
type Number = int | float | complex
```
---
### Generics (Typvariabeln)
Manchmal weiß man nicht welcher Typ genau gemeint ist, möchte aber trotzdem "sicherstellen" dass es sich nicht um zwei unterschiedliche handelt:
```py
def some_func[T](some_list: list[T]) -> T:
# ...
```
kleines Beispiel von "Bounds" aus Rust:
```rust
fn some_func(some_list: Vec) -> T {
// ...
}
```
oder noch schöner
```rust
fn some_func(some_list: Vec) -> T
where T: Add