Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update external_internal_functions.md #84

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions de/1/external_internal_functions.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,37 @@
<!-- Add translation for the following page: https://vyper.fun/#/1/external_internal_functions
Do NOT change the code below. The below code runs the code editor -->

# Chapter 8: Externe / Interne Funktionen

Wie wir besprochen haben, müssen alle Funktionen einen Sichtbarkeitsdekorator enthalten (`@external` oder `@internal`).

| Dekorator | Beschreibung |
| ----------- | -------------------------------------------------------------- |
| `@external` | Funktion kann nur extern aufgerufen werden |
| `@internal` | Funktion kann nur innerhalb des Contracts aufgerufen werden |

Jetzt wollen wir Funktionen schreiben, die nicht von einem anderen Contract aufrufbar sein sollen. Dafür werden wir den `@internal` Sichtbarkeitsdekorator nutzen.

Interne Funktionen werden so erstellt:

```vyper
peopleToAge: HashMap[String[64], uint256]

@internal
def _addPerson(_name: String[64], _age: uint256):
self.peopleToAge[_name] = [_age]
```

So werden nur Funktionen innerhalb unseres Contracts die Funktion `_addPerson` aufrufen können, und damit den Mapping `peopleToAge` erweitern.

Beachten Sie den Unterstrich (`_`) zu Beginn des Funktionnames und der Argumente. Es ist Brauch, bei internen Funktionen den Namen und die Parameter mit einen Unterstrich zu beginnen.

## Stellen Sie sich auf die Probe

Unsere `createPokemon` Funktion ist zur Zeit extern - das heißt, jeder kann sie aufrufen und in unserem Contract neue Pokemons generieren! Machen wir sie besser intern.

1. Schreiben sie `createPokemon` um, so dass es eine interne Funktion wird. Vergessen Sie nicht die Unterstriche!

<!-- tabs:start -->

#### ** Template **
Expand Down