counter (list items[, function f]) ⇒ map
Generates a map which contains the count of all instances of each value from the items array. If a function, f, is supplied to this, each item will be passed to the function first.
Using counter
Using a function is useful when you are working with an array of arrays,
since the function compares based on the value as a whole. Given
some lambda function, only a part of the inner arrays could be
returned and processed. The counter function supports the optional f
parameter.
The following example is a standard use of counter.
function main($args) //This variable used to be called $list, but since ZPE 1.5, list is a reserved keyword and cannot be used $l = [["Ashley", 32], ["Jonathan", 64], ["Adam", 12], ["Jamie", 32], ["Frank", 64]] //By passing this to the function, we can return the second index (index 1) from the inner list and count that $counted = counter($l, function($x) return list_get_at_index ($x, 1) end function) //Should return [12 => 1, 64 => 2, 32 => 2] print($counted) end function
It can also be used nicely with object instances to count properties of them:
struct person $fname = "" $sname = "" $grade = "" function _construct($f, $s, $g) this->$fname = $f this->$sname = $s this->$grade = $g end function public function getGrade() return this->$grade end function end struct function main() $p1 = new person("Ashley", "Peters", "C") $p2 = new person("James", "Peters", "A") $p3 = new person("Frank", "Adams", "B") $p4 = new person("Ashley", "Adams", "A") $p5 = new person("Jamie", "Bond", "A") $p6 = new person("Alec", "Bond", "C") $people = [$p1, $p2, $p3, $p4, $p5, $p6] //Should result in [A => 3, B => 1, C => 2] $result = counter($people, function($x) return $x->getGrade() end function) print($result) //Should print 3 print($result["A"]) end function

There are no comments on this page.
Comments are welcome and encouraged, including disagreement and critique. However, this is not a space for abuse. Disagreement is welcome; personal attacks, harassment, or hate will be removed instantly. This site reflects personal opinions, not universal truths. If you can’t distinguish between the two, this probably isn’t the place for you.
Comments powered by BalfComment