class Person
var name: String
end
def get_name(p: Person) do return p.name
var ps = [new Person("Turing"), new Person("Curry"), new Person("Alfredo")]
ps.sort_with(&get_name)
assert ps[0].name == "Alfredo"
assert ps[1].name == "Curry"
assert ps[2].name == "Turing"
# Sorts an array with a function.
#
# ~~~~nitish
# class Person
# var name: String
# end
#
# def get_name(p: Person) do return p.name
#
# var ps = [new Person("Turing"), new Person("Curry"), new Person("Alfredo")]
# ps.sort_with(&get_name)
# assert ps[0].name == "Alfredo"
# assert ps[1].name == "Curry"
# assert ps[2].name == "Turing"
# ~~~~
fun sort_with(f: Fun1[E, Comparable])
do
var cmp = new ComparatorWith[E](f)
if length > 1 then
cmp.quick_sort(self, 0, length - 1)
end
end
lib/functional/iter_extras.nit:25,9--46,11