Arrays 如何确定Perl 6数组中是否存在元素
我以为在互联网上的某个地方会有一个简单的答案,但似乎我很难找到解决方案。首先,我想知道是否有一个简单的方法或函数: e、 g.Arrays 如何确定Perl 6数组中是否存在元素,arrays,list,containers,raku,Arrays,List,Containers,Raku,我以为在互联网上的某个地方会有一个简单的答案,但似乎我很难找到解决方案。首先,我想知道是否有一个简单的方法或函数: e、 g.~~或来自Perl 5的数组.contains() 了解Perl 6中有多少种实现此结果的不同方法也很好,因为考虑到问题的情况,有些方法可能比其他方法更好。另一种方法是: my @a = <foo bar buzz>; say so 'bar' ∈ @a; say so @a ∋ 'buzz'; # OUTPUT«TrueTrue» my@a=; 如果“
~~
或来自Perl 5的数组.contains()
了解Perl 6中有多少种实现此结果的不同方法也很好,因为考虑到问题的情况,有些方法可能比其他方法更好。另一种方法是:
my @a = <foo bar buzz>;
say so 'bar' ∈ @a;
say so @a ∋ 'buzz';
# OUTPUT«TrueTrue»
my@a=;
如果“bar”eq有(@a){
说“是”;
}
#输出«是»
sub-first
返回匹配的元素或Nil
Nil
是一个假值,意味着您可以在Bool
上下文中使用结果来确定数组是否包含匹配的元素
my @a = 'A'..'Z';
say 'We got it' if @a.first('Z');
say 'We didn\'t get it' if !@a.first(1);
sub-first
有几个副词可以改变结果。例如,要返回索引而不是元素,可以使用:k
副词。在本例中,我们还将结果主题化,以便在if
语句中使用:
my @a = 'A'..'Z';
if @a.first('Q', :k) -> $index {
say $index;
}
请注意,将阵列作为一个集合使用会带来巨大的性能影响,尤其是在重复使用阵列时。在这种情况下,您确实需要执行类似于
my$s=@a.Set代码>在循环外,执行$elem∈ $s
在循环中。您可以使用$elem~~any@array
<代码>任意
创建元素的连接。
my @a = 'A'..'Z';
if @a.first('Q', :k) -> $index {
say $index;
}