배열 요소의 인덱스를 찾는 직접적인 방법은 예 : @ a = qw (a b c)와 같습니다.거기에있는 요소를 주어진 배열 요소의 색인을 얻는 직접적인 방법은 perl?
어떻게 요소 b의 색인을 얻습니까? 나는 그것의 1을 알고 있지만 큰 배열에 대해이 상황을 상상해 보라.
배열 요소의 인덱스를 찾는 직접적인 방법은 예 : @ a = qw (a b c)와 같습니다.거기에있는 요소를 주어진 배열 요소의 색인을 얻는 직접적인 방법은 perl?
어떻게 요소 b의 색인을 얻습니까? 나는 그것의 1을 알고 있지만 큰 배열에 대해이 상황을 상상해 보라.
List :: MoreUtils는 핵심 모듈이 아니므로 CPAN에서 설치해야합니다. 적어도 Perl documentation은 그것을 문서화하지 않습니다.
만약 당신이 가진 모든 것이 참조라면 (예를 들어, \$a[1]
) 나는 방법이 없다는 것이 확실합니다. 그러나 당신이 말했던 것을 감안할 때 물론 "b"에 대한 루프가있는 배열을 검색 할 수 있었고 발견했을 때 어떤 인덱스인지 알 수있었습니다.
@a = qw(a b b c);
사용 모듈 List::MoreUtils 및 firstidx
(일명 first_index
) :
use List::MoreUtils qw{ firstidx };
print firstidx { $_ == 'b' } @a;
유일한 단점에 "B"를 검색 할 때 '대답이'여전히 1이라고 가정
나중에 내가 그렇게 할 수 있지만, 해시 당신이 해시를 반전 할 수 있습니다 값을 기반으로 키를 찾으십시오, 배열에 그것을 할 수있는 쉬운 방법이 있는지 궁금 해서요 – syllogismos
자주이 작업을 수행 할 필요가있는 경우, 당신은 (배열 또는 대신 추가) 해시 할 수 있습니다 :
이my @array = qw(a b c);
my %hash;
@hash{ @array } = 0..$#array;
print $hash{b}; # 1
당신은 @ 배열의 마지막 색인을 의미합니까? – syllogismos
@RemotePath : $ # array는 @array의 마지막 색인입니다. 예. $ # (뒤에 식별자가없는)은 다른 것으로 사용되지 않으며 더 이상 사용되지 않습니다. – ysth
덕분에, 아무 Repititions 경우에도 작동한다고 가정합니다 – syllogismos
@ 리모 경로 : 예, 그것은 반복없이 작동합니다 - 그건 그냥 당신이 마지막 인덱스 (당신이 사용할 수있는 함수'lastidx') 나 N 번째 인덱스, 또는 이상한 것을 원하지 않는다는 것을 확인합니다. –
나는 모듈을 사용하는 방법을 모른다. 그래서 당신은 코어 모듈만을 사용하여 인덱스를 얻는 직접적인 방법이 없다고 확신합니까? – syllogismos