Skip to content

Instantly share code, notes, and snippets.

@Farhandroid
Last active April 27, 2022 10:23
Show Gist options
  • Save Farhandroid/c6f44b8d0029cd5965de87d2b0d81874 to your computer and use it in GitHub Desktop.
Save Farhandroid/c6f44b8d0029cd5965de87d2b0d81874 to your computer and use it in GitHub Desktop.
SearchGeneric
struct Person: Equatable{
let name: String
let email: String
let age: Int
}
func search() {
let henry = Person(name : "Henry", email : "henry@email.com", age : 24)
let robert = Person(name : "Robert", email : "robert@email.com", age : 22)
let tom = Person(name : "Tom", email : "tom@email.com", age : 25)
let listOfPerson = Array(arrayLiteral: henry, robert, tom)
let searchUtil = SearchUtil(list : listOfPerson)
searchUtil.searchItem(element: henry) {(result) -> () in
print(result ?? "Not found")
}
}
class SearchUtil<T: Equatable>{
var list: [T] = []
init(list: [T]) {
self.list = list
}
func searchItem(element: T, foundItem: (T?)->()) {
let itemFoundList = self.list.filter { item in
item == element
}
if (itemFoundList.isEmpty){
foundItem(nil)
}
else{
foundItem(itemFoundList.first)
}
}
}
search()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment