这里的新编码员在Perl工作。有人可以向我解释下面代码的以下部分是做什么的吗?我知道它在数组@animals中执行按字母顺序排列的元素,我认为然后将排序的索引值分配给@idx。我不知道最后一部分" 0 .. $#animals;"是在做。似乎' ..'是Perl中的范围运算符。
my @idx = sort {
$animals[$a] cmp $animals[$b]
} 0 .. $#animals;
以下是完整代码:
@animals = (dog,cat,iguana,parakeet,monkey, giraffe);
@diets = (beef,chicken,chickpeas,seeds,bananna,tree);
@age = (7,3,5,2,20,18);
my @idx = sort {
$animals[$a] cmp $animals[$b]
} 0 .. $#animals;
@animals = @animals[@idx];
@diets = @diets[@idx];
@age = @age[@idx];
print "@animals\n";
print "@diets\n";
print "@age\n";
答案 0 :(得分:4)
$#animals
是@animals
中最后一个条目的索引;在你的例子中,那是5
。
范围运算符接受0 .. 5
并将其展开为0, 1, 2, 3, 4, 5
。
整数列表被传递给sort
,@animals
将它们视为{
"Results": [
{
"FirstName": "John",
"LastName": "Doe"
},
{
"FirstName": "Mary",
"LastName": "Joe"
},
{
"FirstName": "Thomas",
"LastName": "Edison"
}
]
}
的索引,并根据该数组中的值对它们进行排序。
顺便提一下,并行数组非常适合其他一些结构,比如哈希引用数组。