Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

226
Vistas
En Swift, si hago algo con 'let', entonces no puedo cambiar la propiedad, pero ¿por qué keyPath es diferente?
class Person{ var name: String init(_ name: String){ self.name = name } } struct Stuff{ var name: String var owner: Person1 } let jenna = Person("jenna") var mac = Stuff(name: "Macbook pro", owner: jenna) let ownerKeyPath = \Stuff.owner.name mac[keyPath: ownerKeyPath] = "jerry"

Hice a jenna con la palabra clave 'let', pero si uso keyPath, podría cambiar la propiedad de jenna. ¿Cómo funciona?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

KeyPaths son irrelevantes.

Hiciste la variable Person.name . Como tal, mac.owner.name = "jerry" funciona bien.

Pero no lo hará si cambias el name a let . Eso hará que ownerKeyPath sea un KeyPath , no la subclase ReferenceWritableKeyPath de KeyPath que está en su código. Al igual que con las constantes let , no puede establecer valores usando la clase KeyPath .

over 4 years ago · Santiago Trujillo Denunciar

0

Person es un tipo de referencia (una clase). Para un tipo de referencia, let solo significa que la referencia en sí no puede cambiar, por lo que no se puede hacer que jenna apunte a otro objeto. Pero puede cambiar cualquier propiedad var dentro de él (como name . KeyPaths no está relacionado aquí. Lo mismo ocurre con el acceso a la propiedad normal:

 mac.owner.name = "jerry"

Si desea que Person se comporte como un valor, de modo que sus propiedades no puedan cambiar cuando se marca con let (pero sí cuando se marca con var ), entonces debe ser una estructura, no una clase. Entonces se comportará como Stuff.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda