/* Page prose (de) */
"DistributedCodableArguments" = "# Warum Argumente und Rückgaben `Codable` sein müssen\n\nEin lokaler Methodenaufruf übergibt Argumente als Referenzen oder Werte im gemeinsamen Speicher: Der Aufgerufene sieht genau dieselben Objekte. Ein verteilter Aufruf kann das nicht: Der Aufgerufene ist vielleicht auf einer anderen Maschine, ohne Zugriff auf deinen Speicher. Also muss jedes Argument und jeder Rückgabewert **in Bytes verwandelt, hinübergesendet und auf der anderen Seite wieder aufgebaut werden**.\n\nDeshalb müssen die Parameter und der Rückgabetyp einer verteilten Methode die **Serialisierungsanforderung** des Actor-Systems erfüllen (für `ClusterSystem` und die meisten Systeme ist das **`Codable`**):\n\n```swift\n// A Codable payload can cross the wire; a non-Codable one can't.\nstruct Receipt: Codable, Sendable {\n    let id: UUID\n    let amount: Int\n    let newBalance: Int\n}\n\ndistributed actor Ledger {\n    typealias ActorSystem = ClusterSystem\n\n    private var balance = 0\n\n    distributed func deposit(_ amount: Int) -> Receipt {\n        balance += amount\n        return Receipt(id: UUID(), amount: amount, newBalance: balance)\n    }\n}\n```\n\n`Int` und `Receipt` sind `Codable`, also können sie die Reise antreten. Versuch, etwas zu übergeben oder zurückzugeben, das *nicht* codierbar ist (ein laufendes Datenbank-Handle, eine Closure, eine Klasse ohne `Codable`-Konformität), und der Compiler hält dich auf. Es gibt schlicht keine Möglichkeit, ein laufendes Datei-Handle in einen Umschlag zu stecken und es an einen anderen Computer zu schicken.\n\n> **Das ist `Sendable` aus dem Kapitel [Globale Actors und Sendable](Global%20Actors%20and%20Sendable.playgroundchapter/Overview), einen Schritt weitergeführt.** `Sendable` fragt: *Ist es sicher, diesen Wert an eine andere Aufgabe im selben Prozess zu übergeben?* `Codable` (als verteilte Anforderung) stellt die strengere Frage: *Kann dieser Wert in Bytes plattgedrückt und in einem anderen Prozess wieder aufgebaut werden?* Alles, was die Grenzen des Actor-Systems überquert, braucht beides: sicher zu bewegen *und* möglich zu serialisieren. Deine Nutzlast-Typen zusammen als `Codable, Sendable` zu markieren, wie es `Receipt` oben tut, ist das gängige Idiom.\n\n* callout(Denk darüber nach): Sieh dich bei einem deiner eigenen Modelltypen um. Welche seiner Eigenschaften würden bereitwillig über die Leitung reisen, und welche (eine laufende Verbindung, ein zwischengespeichertes Bild, eine Closure) müsstest du zu Hause lassen und stattdessen mit schlichten Daten beschreiben?\n\n[Zurück](@previous)  |  Seite 6 von 9  |  [Weiter: Standorttransparenz](@next)";
