如何在Perl 6数组中查找元素的索引?
在Perl 6数组中查找元素索引的几种方法
嘿,针对你给出的@weekdays数组,要找到'Thursday'的索引其实很简单,Perl 6提供了几个内置方法来搞定这个需求,我给你详细说说:
1. 使用.first方法(推荐找单个匹配)
first方法默认返回第一个匹配的元素,但加上:k参数后,它会返回该元素的索引(Perl 6数组的索引是从0开始的)。
代码示例:
my @weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']; my $thu-index = @weekdays.first(* eq 'Thursday', :k); say $thu-index; # 输出:3
这里的* eq 'Thursday'是一个匿名函数,用来检查数组元素是否等于'Thursday',:k是命名参数,告诉方法返回索引而非元素本身。
2. 使用.grep方法(适合找所有匹配项)
如果你的数组里可能有多个相同的元素,想要获取所有匹配元素的索引,可以用grep方法搭配:k参数,它会返回一个包含所有匹配索引的列表:
# 假设数组有重复元素的情况 my @test = ['Thursday', 'Monday', 'Thursday']; my @all-indices = @test.grep(* eq 'Thursday', :k); say @all-indices; # 输出:(0 2)
3. 手动遍历(不推荐,但适合理解原理)
如果你想手动实现索引查找,也可以通过循环遍历数组的索引和元素:
my $target = 'Thursday'; my $found-index = Nil; for @weekdays.kv -> $idx, $day { if $day eq $target { $found-index = $idx; last; # 找到第一个就退出循环 } } say $found-index; # 输出:3
不过这种方法没必要,因为Perl 6的内置方法已经足够简洁高效啦。
内容的提问来源于stack exchange,提问作者chenyf
相关产品推荐
相关产品推荐

