Funkin/source/funkin/util/tools/IteratorTools.hx

35 lines
659 B
Haxe
Raw Normal View History

package funkin.util.tools;
/**
* A static extension which provides utility functions for Iterators.
2023-06-08 16:30:45 -04:00
*
* For example, add `using IteratorTools` then call `iterator.array()`.
2023-06-08 16:30:45 -04:00
*
* @see https://haxe.org/manual/lf-static-extension.html
*/
class IteratorTools
{
public static function array<T>(iterator:Iterator<T>):Array<T>
{
return [for (i in iterator) i];
}
public static function count<T>(iterator:Iterator<T>, ?predicate:(item:T) -> Bool):Int
{
var n = 0;
if (predicate == null)
{
for (_ in iterator)
n++;
}
else
{
for (x in iterator)
if (predicate(x)) n++;
}
return n;
}
}