从列表或数组中删除没有Raku中(Any)伪像的元素


9

我搜索了Raku文档,几本书籍和教程以及几篇Stackoverflow帖子,以学习如何从列表/数组中干净地删除项目,即不用(Any)代替被删除元素

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

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

有没有办法从列表/数组中删除没有该项的项目(任何)

Answers:


12

是。使用拼接方法:

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]

或者您可以使用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]
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.