NAME
Venus::Collect - Collect Class
ABSTRACT
Collect Class for Perl 5
SYNOPSIS
package main;
use Venus::Collect;
my $collect = Venus::Collect->new([1..4]);
# bless({value => [1..4], 'Venus::Collect')
DESCRIPTION
This package provides a generic collection utility class designed to provide a unified interface for working with data collections in Perl. It can wrap native Perl arrayrefs and hashrefs, as well as compatible objects (e.g., Venus::Array, Venus::Hash, Venus::Set, etc.), and apply functional transformations through callbacks.
This class allows you to create a collection object, then use the execute method to iterate over the contents and selectively transform or filter the data. The method supports both list-like and hash-like data structures, handling key/value iteration when applicable.
It's especially useful in scenarios where you need to apply consistent processing logic across various collection types without writing boilerplate code for each type.
INHERITS
This package inherits behaviors from:
INTEGRATES
This package integrates behaviors from:
METHODS
This package provides the following methods:
execute
execute(coderef $code) (any)
The execute method accepts a callback (i.e. coderef) and executes the callback for each key/value pair in the "value". For each iteration, the $_ variable is set to the value (in the key/value pair). The callback will be passed the key and values as arguments, made available via the @_ variable. The callback must return a tuple, i.e. a list with the key and value, to be returned as a result. This method returns a new instance of "value" provided consisting of only the key/value pairs returned from the callback.
Since 4.15
- execute example 4
-
# given: synopsis package main; my $execute = $collect->execute(sub{@_}); # [1..4]
- execute example 5
-
# given: synopsis package main; my $execute = $collect->execute(sub{$_%2==0 ? (@_) : ()}); # [2,4]
- execute example 6
-
package main; use Venus::Collect; my $collect = Venus::Collect->new(value => {1..8}); my $execute = $collect->execute; # {1..8}
- execute example 7
-
package main; use Venus::Collect; my $collect = Venus::Collect->new(value => {1..8}); my $execute = $collect->execute(sub{}); # {}
- execute example 8
-
package main; use Venus::Collect; my $collect = Venus::Collect->new(value => {1..8}); my $execute = $collect->execute(sub{$_}); # {}
- execute example 9
-
package main; use Venus::Collect; my $collect = Venus::Collect->new(value => {1..8}); my $execute = $collect->execute(sub{@_}); # {1..8}
- execute example 10
-
package main; use Venus::Collect; my $collect = Venus::Collect->new(value => {1..8}); my $execute = $collect->execute(sub{$_%6==0 ? (@_) : ()}); # {5,6}
- execute example 11
-
package main; use Venus::Collect; use Venus::Array; my $value = Venus::Array->new([1..4]); my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute; # bless({value => [1..4], 'Venus::Array')
- execute example 12
-
package main; use Venus::Collect; use Venus::Array; my $value = Venus::Array->new([1..4]); my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{}); # bless({value => [], 'Venus::Array')
- execute example 13
-
package main; use Venus::Collect; use Venus::Array; my $value = Venus::Array->new([1..4]); my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{$_}); # bless({value => [], 'Venus::Array')
- execute example 14
-
package main; use Venus::Collect; use Venus::Array; my $value = Venus::Array->new([1..4]); my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{@_}); # bless({value => [1..4], 'Venus::Array')
- execute example 15
-
package main; use Venus::Collect; use Venus::Array; my $value = Venus::Array->new([1..4]); my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{$_%2==0 ? (@_) : ()}); # bless({value => [2,4], 'Venus::Array')
- execute example 16
-
package main; use Venus::Collect; use Venus::Set; my $value = Venus::Set->new([1..4]); my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute; # bless({value => [1..4], 'Venus::Set')
- execute example 17
-
package main; use Venus::Collect; use Venus::Set; my $value = Venus::Set->new([1..4]); my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{}); # bless({value => [], 'Venus::Set')
- execute example 18
-
package main; use Venus::Collect; use Venus::Set; my $value = Venus::Set->new([1..4]); my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{$_}); # bless({value => [], 'Venus::Set')
- execute example 19
-
package main; use Venus::Collect; use Venus::Set; my $value = Venus::Set->new([1..4]); my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{@_}); # bless({value => [1..4], 'Venus::Set')
- execute example 20
-
package main; use Venus::Collect; use Venus::Set; my $value = Venus::Set->new([1..4]); my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{$_%2==0 ? (@_) : ()}); # bless({value => [2,4], 'Venus::Set')
- execute example 21
-
package main; use Venus::Collect; use Venus::Hash; my $value = Venus::Hash->new(value => {1..8}); my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute; # bless({value => {1..8}, 'Venus::Hash')
- execute example 22
-
package main; use Venus::Collect; use Venus::Hash; my $value = Venus::Hash->new(value => {1..8}); my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{}); # bless({value => {}, 'Venus::Hash')
- execute example 23
-
package main; use Venus::Collect; use Venus::Hash; my $value = Venus::Hash->new(value => {1..8}); my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{$_}); # bless({value => {}, 'Venus::Hash')
- execute example 24
-
package main; use Venus::Collect; use Venus::Hash; my $value = Venus::Hash->new(value => {1..8}); my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{@_}); # bless({value => {1..8}, 'Venus::Hash')
- execute example 25
-
package main; use Venus::Collect; use Venus::Hash; my $value = Venus::Hash->new(value => {1..8}); my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{$_%6==0 ? (@_) : ()}); # bless({value => {5,6}, 'Venus::Hash')
- execute example 26
-
package main; use Venus::Collect; use Venus::Map; my $value = Venus::Map->new(value => {1..8}); my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute; # bless({value => {1..8}, 'Venus::Map')
- execute example 27
-
package main; use Venus::Collect; use Venus::Map; my $value = Venus::Map->new(value => {1..8}); my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{}); # bless({value => {}, 'Venus::Map')
- execute example 28
-
package main; use Venus::Collect; use Venus::Map; my $value = Venus::Map->new(value => {1..8}); my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{$_}); # bless({value => {}, 'Venus::Map')
- execute example 29
-
package main; use Venus::Collect; use Venus::Map; my $value = Venus::Map->new(value => {1..8}); my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{@_}); # bless({value => {1..8}, 'Venus::Map')
- execute example 30
-
package main; use Venus::Collect; use Venus::Map; my $value = Venus::Map->new(value => {1..8}); my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{$_%6==0 ? (@_) : ()}); # bless({value => {5,6}, 'Venus::Map')
- execute example 31
-
package main; use Venus::Collect; my $value = bless [1..4], 'Example'; my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute; # bless([1..4], 'Example')
- execute example 32
-
package main; use Venus::Collect; my $value = bless [1..4], 'Example'; my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{}); # bless([], 'Example')
- execute example 33
-
package main; use Venus::Collect; my $value = bless [1..4], 'Example'; my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{$_}); # bless([], 'Example')
- execute example 34
-
package main; use Venus::Collect; my $value = bless [1..4], 'Example'; my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{@_}); # bless([1..4], 'Example')
- execute example 35
-
package main; use Venus::Collect; my $value = bless [1..4], 'Example'; my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{$_%2==0 ? (@_) : ()}); # bless([2,4], 'Example')
- execute example 36
-
package main; use Venus::Collect; my $value = bless {1..8}, 'Example'; my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute; # bless({1..8}, 'Example')
- execute example 37
-
package main; use Venus::Collect; my $value = bless {1..8}, 'Example'; my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{}); # bless({}, 'Example')
- execute example 38
-
package main; use Venus::Collect; my $value = bless {1..8}, 'Example'; my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{$_}); # bless({}, 'Example')
- execute example 39
-
package main; use Venus::Collect; my $value = bless {1..8}, 'Example'; my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{@_}); # bless({1..8}, 'Example')
- execute example 40
-
package main; use Venus::Collect; my $value = bless {1..8}, 'Example'; my $collect = Venus::Collect->new(value => $value); my $execute = $collect->execute(sub{$_%6==0 ? (@_) : ()}); # bless({5,6}, 'Example')
new
new(any @args) (Venus::Collect)
The new method returns a new instance.
Since 4.15
- new example 1
-
package main; use Venus::Collect; my $new = Venus::Collect->new; # bless({value => undef}, 'Venus::Collect')
- new example 2
-
package main; use Venus::Collect; my $new = Venus::Collect->new([1..4]); # bless({value => [1..4]}, 'Venus::Collect')
- new example 3
-
package main; use Venus::Collect; my $new = Venus::Collect->new(value => [1..4]); # bless({value => [1..4]}, 'Venus::Collect')
AUTHORS
Awncorp, awncorp@cpan.org
LICENSE
Copyright (C) 2022, Awncorp, awncorp@cpan.org.
This program is free software, you can redistribute it and/or modify it under the terms of the Apache license version 2.0.