从列表或数组中删除一个没有 Raku 中的 (Any) 人工制品的元素

Lar*_*een 11 raku

我已经搜索了 Raku 文档和几本书和教程以及几篇 Stackoverflow 帖子,以了解如何干净地从列表/数组中删除项目,即没有(Any)代替已删除的元素

my @s = <3 18 4 8 92 14 30>;
my $item = 8; 
my $index =  @s.first($item, :k);
@s[$index]:delete;
Run Code Online (Sandbox Code Playgroud)

这导致[3 18 4 (Any) 92 14 30],因此我无法对其进行任何操作,例如我无法对其进行应用[+]

有没有办法从列表/数组中删除一个项目而没有(Any)

Eli*_*sen 13

是的。使用拼接方法:

my @s = <3 18 4 8 92 14 30>;
my $item = 8; 
my $index =  @s.first($item, :k);
@s.splice($index,1);
say @s;  # [3 18 4 92 14 30]
Run Code Online (Sandbox Code Playgroud)

或者您可以使用Adverb::Eject模块,因此您可以将上述内容写为:

use Adverb::Eject;
my @s = <3 18 4 8 92 14 30>;
my $item = 8; 
my $index =  @s.first($item, :k);
@s[$index]:eject;
say @s;  # [3 18 4 92 14 30]
Run Code Online (Sandbox Code Playgroud)