Perl의 each 방법
4389 단어 Perl
산열 내부에서, 그것은 무작위로 보이는 순서로 자신의 기록을 유지한다.이 서열을 두루 훑어볼 수 있는 것은 모든 산열이 지난번에 되돌아온 기록이 무엇인지 기억하기 때문이다.이 서열의 실제 순서는 장래의 Perl 버전에서 바뀔 수 있지만, 한 가지 확실한 것은 keys(또는values) 함수가 같은 (수정되지 않은) 산열에서 생성되는 순서가 같다는 것이다.모든 산열은 이 프로그램의 모든 each,keys,values 함수와 호출되어 공유됩니다.이 캐리어는 산열에서 모든 요소를 읽어서 리셋하거나,keys%hash나values%hash를 계산해서 리셋할 수 있습니다.만약 산열을 반복하는 과정에서 원소를 삭제했다면, 결과는 아직 좋은 정의가 없다. 기록은 무시될 수도 있고 중복될 수도 있다.
각 함수는 매번 한 쌍의 키 값만 되돌려주고 전체 목록을 되돌려주지 않기 때문에 지난번의 접근 위치를 기록해야 합니다.라우터의 위치에 대한 기록은 다음 예제를 참조하십시오.
#!/usr/bin/perl -w
##############################
use strict;
my %hash = ( 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6,);
while(my ($k, $v) = each(%hash)){
print "$k => $v
";
last if($k eq "3");
}
print "----------------------
";
while(my ($k, $v) = each(%hash)){
print "$k => $v
";
}
실행 코드, 출력은 다음과 같습니다.
$ ./test.pl
6 => 6
4 => 4
1 => 1
3 => 3
----------------------
2 => 2
5 => 5
분명히 each 함수의 내부 트랙터는 지난번 트랙터의 위치를 기록하고 두 번째 트랙터는 이전의 위치에서 시작한다.
만약 처음으로 해시 끝부분을 훑어보았다면 다음부터는 첫 번째 부분부터 훑어보았을 것이다.
#!/usr/bin/perl -w
##############################
use strict;
my %hash = ( 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6,);
while(my ($k, $v) = each(%hash)){
print "$k => $v
";
}
print "----------------------
";
while(my ($k, $v) = each(%hash)){
print "$k => $v
";
}
출력은 다음과 같습니다.
$ ./test.pl
6 => 6
4 => 4
1 => 1
3 => 3
2 => 2
5 => 5
----------------------
6 => 6
4 => 4
1 => 1
3 => 3
2 => 2
5 => 5
처음 훑어보는 것이 끝에 도착하지 않았지만, 키스를 사용하여 훑어보는 것을 리셋하면 다음에도 처음부터 훑어봅니다.
#!/usr/bin/perl -w
##############################
use strict;
my %hash = ( 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6,);
while(my ($k, $v) = each(%hash)){
print "$k => $v
";
last if($k eq "3");
}
print "----------------------
";
keys %hash;
while(my ($k, $v) = each(%hash)){
print "$k => $v
";
}
출력:
$ ./test.pl
6 => 6
4 => 4
1 => 1
3 => 3
----------------------
6 => 6
4 => 4
1 => 1
3 => 3
2 => 2
5 => 5
이 트랙터는 변수나 인용 이름이 아닌 해시 자체의 트랙 위치를 기록합니다. 예를 들어
#!/usr/bin/perl -w
##############################
use strict;
my %hash2 = ( x => { 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6, });
while(my ($K, $V) = each(%hash2)){
while(my ($k, $v) = each(%$V)){
print "$k => $v
";
last if($k eq "3");
}
}
print "----------------------
";
while(my ($K, $V) = each(%hash2)){
while(my ($k, $v) = each(%$V)){
print "$k => $v
";
}
}
출력은 다음과 같습니다.
$ ./test.pl
6 => 6
4 => 4
1 => 1
3 => 3
----------------------
2 => 2
5 => 5
분명히 이곳의 2급 자해시를 훑어볼 때 임시 변수를 사용했지만, Perl은 변수의 접근 위치를 기록했다.
그리고 Perl의 내부 캐리어는 변수 이름처럼 블록 역할 영역에서만 적용되는 것이 아니라 전역적으로 적용됩니다.
#!/usr/bin/perl -w
##############################
use strict;
my %hash = ( 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6,);
if(1){
while(my ($k, $v) = each(%hash)){
print "$k => $v
";
last if($k eq "3");
}
}
print "----------------------
";
while(my ($k, $v) = each(%hash)){
print "$k => $v
";
}
출력:
$ ./test.pl
6 => 6
4 => 4
1 => 1
3 => 3
----------------------
2 => 2
5 => 5
분명히 첫 번째 반복은 블록 작용역을 사용했지만 두 번째 반복의 결과에 영향을 미쳤다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
cowsay로 현장 고양이에 요시! 되고 싶은 건업무 중에도 현장 고양이에 요시! 하고 싶었기 때문에, cowsay 를 사용해 어떻게든 해 보았습니다. cowsay는 말할 것도없이 오징어 한 서버에 적합한 매혹적인 도구입니다. 살벌한 우리 마음에 일복의 청량을 줍...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.