Excluir um elemento de uma lista ou matriz sem o artefato (Qualquer) no Raku

9

Pesquisei a documentação do Raku e vários livros e tutoriais e várias postagens do Stackoverflow para aprender como excluir um item de uma lista / matriz de forma limpa, ou seja, sem ter o (Qualquer) no lugar do elemento excluído

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

Isso resulta em [3 18 4 (Qualquer) 92 14 30] e, portanto, não posso fazer nenhuma operação, por exemplo, não posso aplicar[+] .

Existe uma maneira de excluir um item de uma lista / matriz sem isso (Qualquer) ?

Lars Malmsteen
fonte

Respostas:

12

Sim. Usando o método de emenda :

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]

Ou você pode usar o módulo Adverb :: Eject , para escrever o acima como:

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]
Elizabeth Mattijsen
fonte