/* Page prose (fr) */
"DistributedCodableArguments" = "# Pourquoi les arguments et les retours doivent être `Codable`\n\nUn appel de méthode local passe les arguments comme des références ou des valeurs en\nmémoire partagée: l'appelé voit les mêmes objets exactement. Un appel distribué ne\npeut pas faire ça: l'appelé peut être sur une autre machine, sans accès à ta mémoire.\nDonc chaque argument et chaque valeur de retour doit être **transformé en octets,\nenvoyé de l'autre côté, et reconstruit là-bas**.\n\nC'est pourquoi les paramètres et le type de retour d'une méthode distribuée doivent\nse conformer à l'**exigence de sérialisation** de l'actor system (pour `ClusterSystem`\net la plupart des systèmes, c'est **`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` et `Receipt` sont `Codable`, donc ils peuvent faire le voyage. Essaie de\npasser ou de renvoyer quelque chose qui *n'est pas* encodable (un handle de base de\ndonnées en direct, une closure, une classe sans conformité `Codable`) et le\ncompilateur t'arrête. Il n'y a tout simplement aucun moyen de mettre un handle de\nfichier en direct dans une enveloppe et de l'envoyer par la poste à un autre\nordinateur.\n\n> **C'est `Sendable` du chapitre [Actors globaux et Sendable](Global%20Actors%20and%20Sendable.playgroundchapter/Overview), poussé un cran\n> plus loin.** `Sendable` demande: *cette valeur est-elle sûre à confier à une autre\n> tâche dans le même processus?* `Codable` (comme exigence distribuée) pose la\n> question plus stricte: *cette valeur peut-elle être aplatie en octets et\n> reconstruite dans un autre processus?* Tout ce qui traverse les frontières de\n> l'actor system a besoin des deux: sûr à déplacer, *et* possible à sérialiser.\n> Marquer tes types de charge utile `Codable, Sendable` ensemble, comme le fait\n> `Receipt` ci-dessus, est l'idiome courant.\n\n* callout(Réfléchis-y): Regarde autour de l'un de tes propres types de modèle.\nLesquelles de ses propriétés traverseraient volontiers le fil, et lesquelles (une\nconnexion en direct, une image en cache, une closure) devrais-tu laisser à la maison\net décrire avec de simples données à la place?\n\n[Précédent](@previous)  |  page 6 sur 9  |  [Suivant: Transparence de localisation](@next)";
