Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

222
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!