Recentemente ho letto Protocols, Generic Type Constraints and Arrays in Swift. La mia domanda riguarda i seguenti due esempi dal blog:Comportamento dei protocolli con Self
Il codice:
protocol MyProtocol1 {
var myValue: Self { get }
}
let array: [MyProtocol1] = [] // Error.
genera l'errore:
Protocol 'MyProtocol1' can only be used as a generic constraint because it has Self or associated type requirements.
che è previsto e ci sono stati diversi SO domande riguardanti l'argomento. Tuttavia, modificando myValue
in una funzione non c'è più alcun errore, tuttavia in entrambi i casi viene restituito Self
.
protocol MyProtocol2 {
func myValue() -> Self
}
let array: [MyProtocol2] = [] // This is okay.
Qualcuno conosce la causa di questo comportamento apparentemente strano?
Si consiglia di discuterlo sui devforum. Sospetto che si tratti di un caso isolato e potrebbe non essere intenzionale. Gli sviluppatori di Swift hanno molte più probabilità di fornire una risposta definitiva. –
Hai trovato una risposta a questo comportamento? – bartzy