Apparemment Le Swift Standard Library affirme que:baisse de séquence (alors :) Est-ce que rien
drop (alors :)
Renvoie une sous en sautant des éléments tout prédicat renvoie vrai et le retour des éléments restants.
En utilisant la signature de la fonction:
func drop(while predicate: (Self.Element) throws -> Bool) rethrows -> Self.SubSequence
Lorsque predicate
est décrit comme:
Une fermeture qui prend un élément de la séquence comme argument et renvoie un Valeur booléenne indiquant si l'élément est une correspondance.
Mon problème est que, dans cette description le comportement suivant ne doit pas se produire:
let test = (0...3).drop { $0 > 1 }
test.contains(0) // true
test.contains(3) // true
J'avais l'impression que la méthode laissait tomber des éléments lorsqu'elle itérait toute la séquence. Si c'était le cas, $ 0 se réfèrerait à l'élément courant (comme c'est le cas avec map, filter, reduce, etc.). Donc, alors que 'test.contains (0)' devrait être vrai, 'test.contains (3)' devrait être faux, non? –
@BrandonBradley Je suppose que le docs n'est pas si clair ici. Quand je vois la signature de la méthode, je pense immédiatement à une boucle while qui laisse tomber le premier élément de la séquence alors que le prédicat est vrai. – Sweeper
Ah, je vois maintenant pourquoi le paramètre du site d'appel est nommé while. La méthode a beaucoup plus de sens maintenant, merci. –