/* Page prose (es) */
"DistributedCodableArguments" = "# Por qué los argumentos y los retornos deben ser `Codable`\n\nUna llamada a un método local pasa los argumentos como referencias o valores en memoria compartida: el receptor ve los mismísimos objetos. Una llamada distribuida no puede hacer eso: el receptor puede estar en otra máquina, sin acceso a tu memoria. Así que cada argumento y cada valor de retorno tiene que **convertirse en bytes, enviarse al otro lado, y reconstruirse allí**.\n\nPor eso los parámetros y el tipo de retorno de un método distribuido deben ajustarse al **requisito de serialización** del sistema de actores (para `ClusterSystem` y la mayoría de los sistemas, ese es **`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` y `Receipt` son `Codable`, así que pueden hacer el viaje. Intenta pasar o devolver algo que *no* sea codificable (un manejador de base de datos en vivo, una clausura, una clase sin conformidad `Codable`) y el compilador te detiene. Simplemente no hay forma de meter un manejador de archivo en vivo en un sobre y enviarlo por correo a otra computadora.\n\n> **Esto es `Sendable` del capítulo [Actores globales y Sendable](Global%20Actors%20and%20Sendable.playgroundchapter/Overview), llevado un paso más allá.** `Sendable` pregunta: *¿es seguro entregar este valor a otra tarea en el mismo proceso?* `Codable` (como requisito distribuido) hace la pregunta más estricta: *¿puede aplanarse este valor en bytes y reconstruirse en otro proceso?* Todo lo que cruza las fronteras del sistema de actores necesita ambas: seguro de mover, *y* posible de serializar. Marcar tus tipos de carga útil como `Codable, Sendable` juntos, como hace `Receipt` arriba, es el modismo común.\n\n* callout(Piénsalo): Mira alrededor de uno de tus propios tipos de modelo. ¿Cuáles de sus propiedades cruzarían felizmente el cable, y cuáles (una conexión en vivo, una imagen en caché, una clausura) tendrías que dejar en casa y describir con datos simples en su lugar?\n\n[Anterior](@previous)  |  página 6 de 9  |  [Siguiente: Transparencia de ubicación](@next)";
