[첫화면으로]Perl/Perlfaq4-08

마지막으로 [b]

1. 연속된 정수들에 어떤 연산을 수행하려면 (How do I perform an operation on a series of integers?)

배열의 각 원소에 대하여 함수를 호출하고 결과를 모으는 경우 다음처럼 사용하라:
    @results = map { my_func($_) } @array;
    @triple = map { 3 * $_ } @single;

각 원소에 대하여 함수를 호출하되 결과는 무시하는 경우:
    foreach $iterator (@array) {
        some_func($iterator);
    }

어떤 (작은) 범위의 정수들 각각에 대하여 함수를 호출하는 경우 다음과 같이 할 수 있다:
    @results = map { some_func($_) } (5 .. 25);
그러나 ".." 연산자는 그 범위에 해당하는 모든 정수를 원소로 하는 배열을 생성한다는 것에 유의하라. 범위가 클 경우 메모리를 많이 차지하게 된다. 대신에 다음과 같이 하라:
    @results = ();
    for ( $i = 5; $i < 500_005; $i++ ) {
        push(@results, some_func($i));
    }

이런 상황은 Perl 5.005에서 수정되었다. "for" 루프 안에서 ".." 연산자를 사용할 경우는 전체 범위의 배열을 생성하지 않고 반복하게 된다.
    for my $i (5 .. 500_005) {
        push(@results, some_func($i));
    }
위 코드는 500,000개의 정수의 리스트를 만들지 않는다.

이름:  
Homepage:
내용:
 


컴퓨터분류 Perl /Perlfaq

마지막 편집일: 2012-2-11 12:25 am (변경사항 [d])
802 hits | Permalink | 변경내역 보기 [h] | 페이지 소스 보기