To use this website fully, you first need to accept the use of cookies. By agreeing to the use of cookies you consent to the use of functional cookies. For more information read this page.

Official ZPE/YASS documentationcounter

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 is supplied to this, each item will be passed to the function first.

First available: Version

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]

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)
  //Should print 3
end function
Code previewClose
Feedback 👍
Comments are sent via email to me.