我已经搜索了 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)