Perl/List-MoreUtils 페이지의 소스 보기
마지막으로 [b]
-- Loading page list... --
내용출력
로그인[l]
Diary
[f]
최근변경내역
[r]
페이지목록[i]
횡설수설[2]
게시판[3]
링크
수정할 수 없습니다: Perl/List-MoreUtils 는 읽기 전용 페이지입니다.
== # perldoc List::MoreUtils 번역 요약 == 원문: http://search.cpan.org/~adamk/List-MoreUtils-0.33/lib/List/MoreUtils.pm === # 이름 === List::MoreUtils - List::Util에 없는 기능들 제공 === # 개괄 === {{{#!vim perl use List::MoreUtils qw{ any all none notall true false firstidx first_index lastidx last_index insert_after insert_after_string apply indexes after after_incl before before_incl firstval first_value lastval last_value each_array each_arrayref pairwise natatime mesh zip uniq distinct minmax part }; }}} === # 설명 === 자주 쓰이지만 Perldoc:List::Util""
에 없는 기능들을 제공 any BLOCK LIST : LIST 원소 중 BLOCK이 참이 되는 원소가 존재하면 참 반환. 그 외 거짓 반환 {{{#!vim perl print "At least one value undefined" if any { ! defined($_) } @list; }}} all BLOCK LIST : 모든 원소에 대해 BLOCK이 참이 되면 참. 그 외 거짓 반환. {{{#!vim perl print "All items defined" if all { defined($_) } @list; }}} none BLOCK LIST : BLOCK을 만족시키는 원소가 없으면 참. LIST가 비어도 참
. 그 외 거짓 반환. {{{#!vim perl print "No value defined" if none { defined($_) } @list; }}} notall BLOCK LIST : BLOCK을 만족시키지 않는 원소가 하나 이상 있으면 참. 그 외 또는 빈 리스트의 경우에는 거짓. {{{#!vim perl print "Not all values defined" if notall { defined($_) } @list; }}} true BLOCK LIST : BLOCK이 참이 되는 원소의 갯수 반환. {{{#!vim perl printf "%i item(s) are defined", true { defined($_) } @list; }}} false BLOCK LIST : BLOCK이 거짓이 되는 원소의 갯수 반환. {{{#!vim perl printf "%i item(s) are not defined", false { defined($_) } @list; }}} firstidx BLOCK LIST first_index BLOCK LIST : BLOCK이 참이 되는 첫번째 원소의 인덱스 반환. 그런 원소가 없으면 -1 반환. {{{#!vim perl my @list = (1, 4, 3, 2, 4, 6); printf "item with index %i in list is 4", firstidx { $_ == 4 } @list; __END__ item with index 1 in list is 4 }}} lastidx BLOCK LIST last_index BLOCK LIST : BLOCK이 참이 되는 마지막 원소의 인덱스 반환. 그런 원소가 없으면 -1 반환. {{{#!vim perl my @list = (1, 4, 3, 2, 4, 6); printf "item with index %i in list is 4", lastidx { $_ == 4 } @list; __END__ item with index 4 in list is 4 }}} insert_after BLOCK VALUE LIST : BLOCK이 참이 되는 첫번째 원소의 뒤에 VALUE를 삽입 {{{#!vim perl my @list = qw/This is a list/; insert_after { $_ eq "a" } "longer" => @list; print "@list"; __END__ This is a longer list }}} insert_after_string STRING VALUE LIST : STRING과 같은 첫번째 원소 뒤에 VALUE를 삽입 {{{#!vim perl my @list = qw/This is a list/; insert_after_string "a", "longer" => @list; print "@list"; __END__ This is a longer list }}} apply BLOCK LIST : LIST의 각 원소에 BLOCK을 적용한 후 그 결과들의 리스트를 반환 :
map
과 유사하나, 입력 리스트의 원소를 수정하지 않음 {{{#!vim perl my @list = (1 .. 4); my @mult = apply { $_ *= 2 } @list; print "\@list = @list\n"; print "\@mult = @mult\n"; __END__ @list = 1 2 3 4 @mult = 2 4 6 8 }}} : 다음 형태를 더 보기좋게 쓴 걸로 생각할 수 있다 {{{#!vim perl for (my @mult = @list) { $_ *= 2 } }}} before BLOCK LIST : 첫 원소부터 BLOCK이 참이 되는 원소 직전까지의 원소들의 리스트를 반환 before_incl BLOCK LIST : 첫 원소부터 BLOCK이 참이 되는 원소까지 포함하여 원소들의 리스트를 반환 after BLOCK LIST : BLOCK이 참이 되는 원소의 직후 원소부터 나머지 원소들의 리스트를 반환. {{{#!vim perl @x = after { $_ % 5 == 0 } (1..9); # returns 6, 7, 8, 9 }}} after_incl BLOCK LIST : BLOCK이 참이 되는 원소를 포함하여 이후 나머지 원소들의 리스트를 반환.
indexes BLOCK LIST : BLOCK이 참이 되는 원소들의 인덱스의 리스트를 반환.
grep
과 유사하나 인덱스를 반환하는 게 차이. firstval BLOCK LIST first_value BLOCK LIST : BLOCK이 참이 되는 첫번째 원소를 반환. 없으면 undef 반환 lastval BLOCK LIST last_value BLOCK LIST : BLOCK이 참이 되는 마지막 원소를 반환. 없으면 undef 반환 pairwise BLOCK ARRAY1 ARRAY2 : ARRAY1과 ARRAY2의 원소 쌍에 대해 BLOCK을 수행한 후 그 결과의 리스트를 반환. 두 원소는 각각 $a와 $b에 담김. 이 두 변수는 원래 원소의 별칭이기 때문에 이걸 수정하면 입력 배열 자체가 수정되는 것에 유의 {{{#!vim perl @a = (1 .. 5); @b = (11 .. 15); @x = pairwise { $a + $b } @a, @b; # returns 12, 14, 16, 18, 20 # mesh with pairwise @a = qw/a b c/; @b = qw/1 2 3/; @x = pairwise { ($a, $b) } @a, @b; # returns a, 1, b, 2, c, 3 }}} each_array ARRAY1 ARRAY2 ... : ARRAY1, ARRAY2, ..., ARRAYn 의 원소들의 리스트를 반환하는 반복자(iterator)를 생성함. 이 반복자를 처음 부르면 각 배열의 첫 원소들의 리스트를 반환. 그 다음은 두번째 원소들의 리스트를 반환. 이렇게 모든 원소를 반환할 때까지 반복 {{{#!vim perl my $ea = each_array(@a, @b, @c); while ( my ($a, $b, $c) = $ea->() ) { .... } }}} : 모든 배열의 끝에 도달하고 나면 빈 리스트 반환 : 반복자의 인자로
'index'
를 전달하면, 마지막으로 추출한 원소의 인덱스를 반환 each_arrayref LIST : each_array와 같으나, 인자로 배열들이 아니라 배열의 레퍼런스들을 받음 natatime EXPR, LIST : 배열 반복자를 생성. 이 반복자는 한 번에 EXPR개의 원소를 가져옴 {{{#!vim perl my @x = ('a' .. 'g'); my $it = natatime 3, @x; while (my @vals = $it->()) { print "@vals\n"; } __END__ a b c d e f g }}} mesh ARRAY1 ARRAY2 [ ARRAY3 ... ] zip ARRAY1 ARRAY2 [ ARRAY3 ... ] : 각 원소의 첫번째 원소들, 두번째 원소들, 세번째 원소들... 등으로 구성된 리스트를 반환 {{{#!vim perl @x = qw/a b c d/; @y = qw/1 2 3 4/; @z = mesh @x, @y; # returns a, 1, b, 2, c, 3, d, 4 @a = ('x'); @b = ('1', '2'); @c = qw/zip zap zot/; @d = mesh @a, @b, @c; # x, 1, zip, undef, 2, zap, undef, undef, zot }}} uniq LIST distinct LIST : LIST에서 중복된 원소를 제거한 새 리스트를 반환. 원소의 순서는 원래 LIST와 동일. 스칼라 문맥에서는 LIST 내의 고유한 원소들의 갯수를 반환 {{{#!vim perl my @x = uniq 1, 1, 2, 2, 3, 5, 3, 4; # returns 1 2 3 5 4 my $x = uniq 1, 1, 2, 2, 3, 5, 3, 4; # returns 5 }}} minmax LIST : LIST의 원소 중 최솟값과 최댓값을 찾아서 그 둘의 리스트를 반환 part BLOCK LIST : BLOCK의 리턴값에 기반해서 LIST를 분할함. 분할된 배열들의 레퍼런스의 리스트를 반환. {{{#!vim perl my $i = 0; my @part = part { $i++ % 2 } 1 .. 8; # returns [1, 3, 5, 7], [2, 4, 6, 8] }}} : 원소가 없는 파티션은 undef이 반환됨 {{{#!vim perl my @part = part { 2 } 1 .. 10; # returns undef, undef, [ 1 .. 10 ] }}} : BLOCK의 결과가 음수가 되지 않게 주의 {{{#!vim perl my @part = part { -1 } 1 .. 10; __END__ Modification of non-creatable array value attempted, subscript -1 ... }}} : 이미 파티션이 생성된 후에는 음수도 가능함
{{{#!vim perl my @idx = ( 0, 1, -1 ); my $i = 0; my @part = part { $idx[$i++ % 3] } 1 .. 8; # [1, 4, 7], [2, 3, 5, 6, 8] }}} === # 익스포트 === 기본적으로는 아무 함수도 익스포트되지 않음 {{{#!vim perl use List::MoreUtils ':all'; use List::MoreUtils qw{ any firstidx }; }}} === # 환경 변수 ===
LIST_MOREUTILS_PP
를 설정할 경우, XS버전의 구현을 사용하지 않고 순수 펄 구현을 사용한다. 테스트 또는 버그 제출을 위한 변수. === # 버그, 지원, 감사, 카피라이트 등 === 5.6.x 버전에서 신택스 에러가 나는 문제가 있음 {{{#!vim perl # 에러 my @x = apply { s/foo/bar/ } qw{ foo bar baz }; # 아래와 같이 쓸 것 my @x = apply { s/foo/bar/ } 'foo', 'bar', 'baz'; my @x = apply { s/foo/bar/ } my @dummy = qw/foo bar baz/; }}} (이하 생략) === # 참고 === Perldoc:List::Util""
== # 기타 & Comments ==
----
---- [[컴퓨터분류]] [[Perl]]
Perl/List-MoreUtils
페이지로 돌아가기 |
다른 수정본 보기