Why not adopt me?
NAME
Set::Associate::NewKey - New Key assignment methods
VERSION
version 0.001001
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 populator.
This is more or less a wrapper for passing around subs with an implict 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 );
You can use ->
or not if you want, nothing under the hood cares.
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 );
You can use ->
or not if you want, nothing under the hood cares.
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
You can use ->
or not if you want, nothing under the hood cares.
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" );
You can use ->
or not if you want, nothing under the hood cares.
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" );
You can use ->
or not if you want, nothing under the hood cares.
METHODS
run
runs code attached via "code"
my $value = $object->run( $set_associate_object , $key );
And $value
is the newly formed associaiton value.
ATTRIBUTES
name
code
AUTHOR
Kent Fredric <kentfredric@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2013 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.