Returns the first index in which an element of the collection satisfies the given predicate.
SDKs
- macOS 10.14+
- Xcode 10.0+
Framework
- Create ML
Declaration
func firstIndex(where predicate: ((MLData Table.Row.Key, MLData Table.Row.Value)) throws -> Bool) rethrows -> Int?
Parameters
predicate
A closure that takes an element as its argument and returns a Boolean value that indicates whether the passed element represents a match.
Return Value
The index of the first element for which predicate
returns true
. If no elements in the collection satisfy the given predicate, returns nil
.
Discussion
You can use the predicate to find an element of a type that doesn’t conform to the Equatable
protocol or to find an element that matches particular criteria. Here’s an example that finds a student name that begins with the letter “A”:
let students = ["Kofi", "Abena", "Peter", "Kweku", "Akosua"]
if let i = students.firstIndex(where: { $0.hasPrefix("A") }) {
print("\(students[i]) starts with 'A'!")
}
// Prints "Abena starts with 'A'!"
Complexity: O(n), where n is the length of the collection.