Eu realmente tento entrar no costume lendo a documentação oficial da Apple. Mas, para ser sincero: tive problemas para conseguir as coisas.
Qual é aqui a diferença entre os quatro 'String init (descrevendo: Assunto)'?
Eu realmente tento entrar no costume lendo a documentação oficial da Apple. Mas, para ser sincero: tive problemas para conseguir as coisas.
Qual é aqui a diferença entre os quatro 'String init (descrevendo: Assunto)'?
A página de detalhes fala sobre as diferenças.
https://developer.apple.com/documentation/swift/string/init(descrevendo:)-67ncf
Se você digitar
No Xcode e "Jump to Definition" você verá como eles são definidos
A parte após
where
é o que corresponde às descrições da documentação.Apesar de compartilharem o mesmo nome, cada uma dessas sobrecargas tem restrições diferentes em seus tipos genéricos e associados , mas a seção de resumo na página de documentação da Apple não exibe essas restrições, daí a ambiguidade visual.
Mas se você seguir cada link para sua própria página, verá como as restrições são diferentes:
init<Subject>(describing instance: Subject) where Subject : TextOutputStreamable
init<Subject>(describing instance: Subject) where Subject : CustomStringConvertible
init<Subject>(describing instance: Subject) where Subject : CustomStringConvertible, Subject : TextOutputStreamable
init<Subject>(describing instance: Subject)
init<Subject>(reflecting subject: Subject)
Isso se deve à conformidade do protocolo e à sobrecarga do inicializador.
init<Subject>(describing instance: Subject) where Subject : TextOutputStreamable
init<Subject>(describing instance: Subject) where Subject : CustomStringConvertible
init<Subject>(describing instance: Subject) where Subject : CustomStringConvertible, Subject : TextOutputStreamable
init<Subject>(describing instance: Subject)
Clicar na definição do inicializador fornece as seguintes informações explicando o que cada um faz.