NAME
List::Rubyish - Array iterator like the Ruby
SYNOPSIS
my
$array_ref
= [
{
name
=>
'jkondo'
},
{
name
=>
'cinnamon'
}
];
my
$list
= List::Rubyish->new(
$array_ref
);
$list
->size;
#=> 2
my
$first
=
$list
->
shift
;
#=> {name => 'jkondo'}
$list
->
push
(
$first
);
#=> [{name => 'cinnamon'}, {name => 'jkondo'}];
# List::Rubyish provides much more useful methods. For more
# details, see the sections below.
OVERVIEW
DBIx::MoCo::List is very useful, However installation is complex.
List::Rubyish was made in order to enable use of DBIx::MoCo::List independently.
METHODS
- dump ()
-
Dump the content of
$self
using Data::Dumper. - push ( @array )
- unshift ( @array )
-
Sets the argument into
$self
, a refernce to an array blessed by List::Rubyish, like the same name functions provided by Perl core, then returns a List::Rubyish object.my
$list
= List::Rubyish->new([
qw(1 2 3)
]);
$list
->
push
(4, 5);
#=> [1, 2, 3, 4, 5]
$list
->
unshift
(0);
#=> [0, 1, 2, 3, 4, 5]
- concat ( \@array )
- prepend ( \@array )
-
They're almost the same as
push()
/unshift()
described above except that the argument shoud be a reference to an array.my
$list
= List::Rubyish->new([1, 2, 3]);
$list
->concat([4, 5]);
#=> [1, 2, 3, 4, 5]
$list
->prepend([0]);
#=> [0, 1, 2, 3, 4, 5]
- shift ()
- pop ()
-
Pulls out the first/last element from
$self
, a refernce to an array blessed by List::Rubyish, then returns it like the same name functions in Perl core.$list
= List::Rubyish->new([1, 2, 3]);
$list
->
shift
;
#=> 1
$list
->
pop
;
#=> 3
$list
->
dump
#=> [2]
- first ()
- last ()
-
Returns the first/last element of
$self
, a refernce to an array blessed by List::Rubyish. These methods aren't destructive contrary toshift()
/pop()
method.$list
= List::Rubyish->new([1, 2, 3]);
$list
->first;
#=> 1
$list
->
last
;
#=> 3
$list
->
dump
#=> [1, 2, 3]
- slice ( $start, $end )
-
Returns the elements whose indexes are between
$start
and$end
as a List::Rubyish object.$list
= List::Rubyish->new([
qw(1 2 3 4)
]);
$list
->slice(1, 2)
#=> [2, 3]
- zip ( \@array1, \@array2, ... )
-
Bundles up the elements in each arguments into an array or a List::Rubyish object along with the context.
my
$list
= List::Rubyish->new([1, 2, 3]);
$list
->zip([4, 5, 6], [7, 8, 9]);
#=> [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
# When the numbers of each list are different...
$list
= List::Rubyish->new([1, 2, 3]);
$list
->zip([4, 5], [7, 8, 9]);
#=> [[1, 4, 7], [2, 5, 8], [3, undef, 9]]
my
$list
= List::Rubyish->new([1, 2]);
$list
->zip([4, 5], [7, 8, 9]);
#=> [[1, 4, 7], [2, 5, 8]]
- delete ( $value, $code )
-
Deletes the same values as
$value
in$self
, a refernce to an array blessed by List::Rubyish, and returns the value if found. If the value is not found in$self
and$code
is passed in, the code is executed using the value as an argument to find the value to be deleted.$list
= List::Rubyish->new([1, 2, 3, 2, 1]);
$list
->
delete
(2);
#=> 2
$list
->
dump
#=> [1, 3, 1]
- delete_at ( $pos )
-
Deletes the element at
$pos
and returns it.$list
= List::Rubyish->new([1, 2, 3, 2, 1]);
$list
->delete_at(3);
#=> 2
$list
->
dump
#=> [1, 2, 3, 1]
- delete_if ( $code )
-
Deletes the elements if
$code
returns true value with each element as an argument.$list
= List::Rubyish->new([1, 2, 3, 4]);
$list
->delete_if(
sub
{ (
$_
% 2) == 0) });
$list
->
dump
#=> [1, 3]
- inject ( $result, $code )
-
Executes folding calculation using
$code
through each element and returns the result.$list
= List::Rubyish->new([1, 2, 3, 4]);
$list
->inject(0,
sub
{
$_
[0] +
$_
[1] });
#=> 10
- join ( $delimiter )
-
Joins all the elements by
$delimiter
.$list
= List::Rubyish->new([0 1 2 3]);
$list
->
join
(
', '
)
#=> '0, 1, 2, 3'
- each_index ( $code )
-
Executes
$code
with each index of$self
, a refernce to an array blessed by List::Rubyish.$list
= List::Rubyish->new([1, 2, 3]);
$list
->each_index(
sub
{ do_something(
$_
) });
- each ( $code )
-
Executes
$code
with each value of$self
, a refernce to an array blessed by List::Rubyish.$list
= List::Rubyish->new([1, 2, 3]);
$list
->
each
(
sub
{ do_something(
$_
) });
- collect ( $code )
-
Executes
$code
with each element of$self
, a refernce to an array blessed by List::Rubyish using CORE::map() and returns the results as a list or List::Rubyish object along with the context.$list
= List::Rubyish->new([1, 2, 3]);
$list
->
map
(
sub
{
$_
* 2 });
#=> [2, 4, 6]
- map ( $code )
-
An alias of
collect()
method described above. - grep ( $code )
-
Executes
$code
with each element of$self
, a refernce to an array blessed by List::Rubyish using CORE::grep() and returns the results as a list or List::Rubyish object along with the context.$list
= List::Rubyish->new([
qw(1 2 3 4)
]);
$list
->
grep
(
sub
{ (
$_
% 2) == 0 });
#=> [2, 4]
- find ( $code )
-
Returns the first value found in
$self
, a refernce to an array blessed by List::Rubyish, as a result of$code
..$list
= List::Rubyish->new([1, 2, 3, 4]);
$list
->find(
sub
{ (
$_
% 2) == 0 });
#=> 2
- select ( $code )
-
Returns the values found in
$self
, a refernce to an array blessed by List::Rubyish, as a result of$code
..$list
= List::Rubyish->new([1, 2, 3, 4]);
$list
->
select
(
sub
{ (
$_
% 2) == 0 });
#=> 2, 4
- index_of ( $arg )
-
Returns index of given target or given code returns true.
$list
= List::Rubyish->new([
qw(foo bar baz)
]);
$list
->index_of(
'bar'
);
#=> 1
$list
->index_of(
sub
{
shift
eq
'bar'
});
#=> 1
- sort ( $code )
-
Sorts out each element and returns the result as a list or List::Rubyish object along with the context.
$list
= List::Rubyish->new([
qw(3 2 4 1])
;
$list
->
sort
;
#=> [1, 2, 3, 4]
$list
->
sort
(
sub
{
$_
[1] <=>
$_
[0] });
#=> [4, 3, 2, 1]
- sort_by ( $code, $cmp )
-
Sorts out each element with Schwartzian transform returns the result as a list or List::Rubyish object along with the context.
$list
= List::Rubyish->new([ [3], [2], [4], [1]]);
$list
->sort_by(
sub
{
$_
->[0] });
#=> [[1], [2], [3], [4]]
$list
->sort_by(
sub
{
$_
->[0] },
sub
{
$_
[1} <=>
$_
[0] } );
#=> [[4], [3], [2], [1]]
- compact ()
-
Eliminates undefined values in
$self
, a refernce to an array blessed by List::Rubyish.$list
= List::Rubyish->new([1, 2,
undef
, 3,
undef
, 4]);
$list
->compact;
#=> [1, 2, 3, 4]
- length ()
-
Returns the length of
$self
, a refernce to an array blessed by List::Rubyish.$list
= List::Rubyish->new([
qw(1 2 3 4)
]);
$list
->
length
;
#=> 4
- size ()
-
An alias of
length()
method described above. - flatten ()
-
Returns a list or List::Rubyish object which is recursively flattened out.
$list
= List::Rubyish->new([1, [2, 3, [4], 5]]);
$list
->flattern;
#=> [1, 2, 3, 4, 5]
- is_empty ()
-
Returns true if
$self
, a refernce to an array blessed by List::Rubyish, is empty. - uniq ()
-
Uniquifies the elements in
$self
, a refernce to an array blessed by List::Rubyish, and returns the result.$list
= List::Rubyish->new([1, 2, 2, 3, 3, 4])
$list
->uniq;
#=> [1, 2, 3, 4]
- reduce ( $code )
-
Reduces the list by
$code
.# finds the maximum value
$list
= List::Rubyish->new([4, 1, 3, 2])
$list
->reduce(
sub
{
$_
[0] >
$_
[1] ?
$_
[0] :
$_
[1] });
#=> 4
See List::Util to get to know about details of
reduce()
. - reverse ()
-
Returns an reversely ordered
$self
, a refernce to an array blessed by List::Rubyish.$list
= List::Rubyish->new([4, 1, 3, 2])
$list
->
reverse
;
#=> [2, 3, 1, 4]
- dup ()
-
Returns a duplicated
$self
, a refernce to an array blessed by List::Rubyish. - sum ()
-
Returns the sum of each element in
$self
, a refernce to an array blessed by List::Rubyish.$list
= List::Rubyish->new([1, 2, 3, 4]);
$list
->sum;
#=> 10
SEE ALSO
DBIx::MoCo::List, List::Util, List::MoreUtils, http://github.com/naoya/list-rubylike, http://d.hatena.ne.jp/naoya/20080419/1208579525, http://www.ruby-lang.org/ja/man/html/Enumerable.html
AUTHOR
Junya Kondo, <jkondo@hatena.com>, Naoya Ito, <naoya@hatena.ne.jp>, Kentaro Kuribayashi, <kentarok@gmail.com>, Yuichi Tateno, <secondlife at hatena ne jp<gt>,
Kazuhiro Osawa <yappo <at> shibuya <döt> pl>
thanks to
naoya, kentaro, tokuhirom, kan, lopnor
REPOSITORY
svn co http://svn.coderepos.org/share/lang/perl/List-Rubyish/trunk List-Rubyish
List::Rubyish is Subversion repository is hosted at http://coderepos.org/share/. patches and collaborators are welcome.
LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
DBIx::MoCo::List's COPYRIGHT
Copyright (C) Hatena Inc. All Rights Reserved.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 676:
Non-ASCII character seen before =encoding in '<döt>'. Assuming UTF-8