Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

413
Visualizações
Protocolos Swift: ¿Diferencia entre { get } y { get set } con ejemplos concretos?

Soy bastante nuevo en Swift, y aunque he leído la documentación de Apple y muchos temas e hilos sobre esto, todavía no puedo entender cuál es la diferencia entre { get } y { get set } . Quiero decir, estoy buscando una explicación con un ejemplo concreto.

Como por ejemplo:

 protocol PersonProtocol { var firstName: String { get } var lastName: String { get set } }

¿Cuál sería la diferencia real entre estas dos propiedades? Traté de jugar con estas propiedades en un parque infantil:

 struct Person: PersonProtocol { var firstName: String var lastName: String } var p = Person(firstName: "John", lastName: "Lennon") print(p.firstName) // John print(p.lastName) // Lennon p.firstName = "Paul" p.lastName = "McCartney" print(p.firstName) // Paul print(p.lastName) // McCartney

No ayudó... Gracias por tu ayuda.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Está creando una variable de tipo Person y no hay restricciones en esa estructura. Si, en cambio, crea una variable de tipo PersonProtocol , firstName será de solo lectura.

 var p1: PersonProtocol = Person(firstName: "John", lastName: "Lennon") print(p1.firstName) // John print(p1.lastName) // Lennon p1.firstName = "Paul" <== error: cannot assign to property: 'firstName' is a get-only property
over 4 years ago · Santiago Trujillo Relatório

0

protocol : es un requisito de alguna interfaz mínima del tipo que lo implementa.

  • var name: Type { get } requiere que el tipo tenga una propiedad con al menos un getter (accesible desde fuera del tipo, no private ), es decir, el código externo debería poder leer el valor de la propiedad. En el tipo de implementación, se podría let name: Type , var name: Type , private(set) var name: Type , fileprivate(set) var name: Type , etc.

  • var name: Type { get set } requiere que el tipo tenga una propiedad con getter y setter accesibles, es decir, el código externo debería poder leer y escribir en la propiedad. Aquí solo se permitiría var name: Type .

Si el protocol requiere getter pero también proporciona un setter , no está en contra de los requisitos del protocol . Pero si el protocol requiere tanto getter como setter , debe proporcionar ambos, y no tener ninguno de ellos no será una implementación válida.


Su clase Person definió ambas propiedades como var (con getter y setter accesibles), por lo tanto, puede cambiarlas. Pero PersonProtocol no ha requerido la capacidad de establecer firstName .

Y como muestra firstName , si solo usa la interfaz requerida por el protocol , no podrá cambiar el valor del nombre.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda