Why not adopt me?
NAME
Set::Associate::NewKey - New Key assignment methods
VERSION
version 0.004001
DESCRIPTION
This class implements the mechanism which controls how the values are assigned to 'new' keys.
The part you're mostly interested in are the "CLASS METHODS", which return the right assignment method.
This is more or less a wrapper for passing around subs with an implicit interface.
my $assigner = Set::Associate::NewKey->new(
name => 'linear_wrap',
code => sub {
my ( $self, $sa , $key ) = @_;
....
},
);
my $value = $assigner->run( $set_associate_object, $key );
CONSTRUCTOR ARGUMENTS
name
required Str
code
required CodeRef
CLASS METHODS
linear_wrap
shift
's the first item off the internal _items_cache
my $sa = Set::Associate->new(
...
on_new_key => Set::Associate::NewKey->linear_wrap
);
or alternatively
my $code = Set::Associate::NewKey->linear_wrap
my $newval = $code->run( $set, $key_which_will_be_ignored );
random_pick
non-destructively picks an element from _items_cache
at random.
my $sa = Set::Associate->new(
...
on_new_key => Set::Associate::NewKey->random_pick
);
or alternatively
my $code = Set::Associate::NewKey->random_pick
my $newval = $code->run( $set, $key_which_will_be_ignored );
pick_offset
Assuming offset is numeric, pick either that number, or a modulo of that number.
NOTE: do not use this unless you are only working with numeric keys.
If you're using anything else, the hash_sha1 or hash_md5 methods are suggested.
my $sa = Set::Associate->new(
...
on_new_key => Set::Associate::NewKey->pick_offset
);
or alternatively
my $code = Set::Associate::NewKey->pick_offset
my $newval = $code->run( $set, 9001 ); # despite picking numbers OVER NINE THOUSAND
# will still return items in the array
hash_sha1
requires bigint
support
Determines the offset for "pick_offset" from taking the numeric value of the SHA1
hash of the given string
my $sa = Set::Associate->new(
...
on_new_key => Set::Associate::NewKey->hash_sha1
);
or alternatively
my $code = Set::Associate::NewKey->hash_sha1();
my $newval = $code->run( $set, "Some String" );
hash_md5
requires bigint
support
Determines the offset for "pick_offset" from taking the numeric value of the MD5 hash of the given string
my $sa = Set::Associate->new(
...
on_new_key => Set::Associate::NewKey->hash_md5
);
or alternatively
my $code = Set::Associate::NewKey->hash_md5();
my $newval = $code->run( $set, "Some String" );
ATTRIBUTES
name
code
AUTHOR
Kent Fredric <kentnl@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2017 by Kent Fredric <kentfredric@gmail.com>.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.