Eliminar un elemento de una lista o matriz sin el artefacto (Any) en Raku

9

He buscado en la Documentación de Raku y en varios libros y tutoriales y en varias publicaciones de Stackoverflow para aprender cómo eliminar un elemento de una lista / matriz de forma limpia, es decir, sin tener (Any) en el lugar del elemento eliminado

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

Esto da como resultado [3 18 4 (Cualquiera) 92 14 30] y, por lo tanto, no puedo realizar ninguna operación, por ejemplo, no puedo aplicarlo [+].

¿Hay alguna manera de eliminar un elemento de una lista / matriz sin eso (Cualquiera) ?

Lars Malmsteen
fuente

Respuestas:

12

Si. Usando el método de empalme :

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]

O puede usar el módulo Adverb :: Eject , para escribir lo anterior 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
fuente