如何确定元素是否存在于 Perl 6 数组中
How to determine if an element exists in a Perl 6 array
我以为在互联网上的某个地方会有一个简单的答案,但我似乎无法找到解决方案。我首先想知道是否有一个简单的方法或函数:
例如~~
或 array.contains()
来自 Perl 5
如果知道在 Perl 6 中有多少种不同的方法可以达到这个结果也很好,因为考虑到问题的情况,有些方法可能比其他方法更好。
my @a = <foo bar buzz>;
say so 'bar' ∈ @a;
say so @a ∋ 'buzz';
# OUTPUT«TrueTrue»
如 http://doc.perl6.org/language/setbagmix and defined in https://github.com/rakudo/rakudo/blob/nom/src/core/set_operators.pm 中所述。
我相信 Set
检查等效性,如果您需要标识,则必须遍历数组并 ===
它。
您可以将 Array
变成 Set
并使用下标。
say @a.Set{'bar'};
# OUTPUT«True»
say @a.Set<bar buzz>;
# OUTPUT«(True True)»
另一种方法是:
my @a = <foo bar buzz>;
if 'bar' eq any(@a) {
say "yes";
}
# OUTPUT«yes»
Sub first documentation. sub first
return 匹配元素或 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
有几个副词可以改变结果。例如,对于 return 索引而不是元素,可以使用 :k
副词。在此示例中,我们还将结果主题化以在 if
语句中使用:
my @a = 'A'..'Z';
if @a.first('Q', :k) -> $index {
say $index;
}
我以为在互联网上的某个地方会有一个简单的答案,但我似乎无法找到解决方案。我首先想知道是否有一个简单的方法或函数:
例如~~
或 array.contains()
来自 Perl 5
如果知道在 Perl 6 中有多少种不同的方法可以达到这个结果也很好,因为考虑到问题的情况,有些方法可能比其他方法更好。
my @a = <foo bar buzz>;
say so 'bar' ∈ @a;
say so @a ∋ 'buzz';
# OUTPUT«TrueTrue»
如 http://doc.perl6.org/language/setbagmix and defined in https://github.com/rakudo/rakudo/blob/nom/src/core/set_operators.pm 中所述。
我相信 Set
检查等效性,如果您需要标识,则必须遍历数组并 ===
它。
您可以将 Array
变成 Set
并使用下标。
say @a.Set{'bar'};
# OUTPUT«True»
say @a.Set<bar buzz>;
# OUTPUT«(True True)»
另一种方法是:
my @a = <foo bar buzz>;
if 'bar' eq any(@a) {
say "yes";
}
# OUTPUT«yes»
Sub first documentation. sub first
return 匹配元素或 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
有几个副词可以改变结果。例如,对于 return 索引而不是元素,可以使用 :k
副词。在此示例中,我们还将结果主题化以在 if
语句中使用:
my @a = 'A'..'Z';
if @a.first('Q', :k) -> $index {
say $index;
}