Skip to content

Instantly share code, notes, and snippets.

@minibugdev
Created August 19, 2017 06:07
Show Gist options
  • Save minibugdev/5abb19edb98fd8e40f969a72ab9ae070 to your computer and use it in GitHub Desktop.
Save minibugdev/5abb19edb98fd8e40f969a72ab9ae070 to your computer and use it in GitHub Desktop.
// implement search function that can be filter by name,priceRange or category
fun List<Product>.search(name: String? = null,
priceRange: Pair<Double, Double>? = null,
categoryId: String? = null): List<Product> = TODO("Make it happen")
@Judrummer
Copy link

Admin solution

fun List<Product>.search(name: String? = null,
                         priceRange: Pair<Double, Double>? = null,
                         categoryId: String? = null): List<Product> = this
        .let { filteredList -> if (name != null) filteredList.filter { it.name.startsWith(name) } else filteredList }
        .let { filteredList -> if (priceRange != null) filteredList.filter { it.price in priceRange.first..priceRange.second } else filteredList }
        .let { filteredList -> if (categoryId != null) filteredList.filter { it.category.id == categoryId } else filteredList }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment