配列要素のインデックスを見つけるための直接的な方法は、 のようになります。例えば、 @ a = qw(a b c);は、配列要素のインデックスを取得するための直接的な方法です(perlの要素を参照)。
どのように要素bのインデックスを取得しますか。 私はその1を知っていますが、この状況を大きな配列に想像してください。
配列要素のインデックスを見つけるための直接的な方法は、 のようになります。例えば、 @ a = qw(a b c);は、配列要素のインデックスを取得するための直接的な方法です(perlの要素を参照)。
どのように要素bのインデックスを取得しますか。 私はその1を知っていますが、この状況を大きな配列に想像してください。
List :: MoreUtilsはコアモジュール(AFAICS)ではないので、CPANからインストールする必要があります。少なくとも、Perl documentationはそれを文書化していません。
あなたが持っていたものすべてが参考になっていれば(例えば、\$a[1]
)、方法がないと確信しています。しかし、あなたが言ったことを考えれば、もちろん、配列を "b"のループで検索し、見つかったときにどのインデックスにあったのかを知ることができます。 、次に使用モジュールList::MoreUtilsとfirstidx
(別名first_index
)
@a = qw(a b b c);
:
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
ありがとう、私はそれが反復がない場合でも動作すると仮定します – syllogismos
@RemotePath:はい、それは繰り返しなしで動作します - あなたが最後のインデックス(あなたが使うことができる関数 'lastidx')またはN番目のインデックス、または何か奇妙なものが欲しくないことをチェックしてください。 –
私はnoobだから、私はモジュールを使用する方法を知りません。コアモジュールのみを使用してインデックスを取得する直接の方法はないと確信していますか? – syllogismos