Supprimer un élément d'une liste ou d'un tableau sans l'artefact (Any) dans Raku

9

J'ai cherché dans la documentation Raku et plusieurs livres et tutoriels et plusieurs publications Stackoverflow pour apprendre comment supprimer un élément d'une liste / tableau proprement, c'est-à-dire sans avoir (Tout) à la place de l'élément supprimé

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

Il en résulte [3 18 4 (Any) 92 14 30] et donc je ne peux pas faire d'opération dessus, par exemple je ne peux pas l'appliquer [+].

Existe-t-il un moyen de supprimer un élément d'une liste / tableau sans cela (Any) ?

Lars Malmsteen
la source

Réponses:

12

Oui. En utilisant la méthode d' épissure :

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 vous pouvez utiliser le module Adverb :: Eject , vous pouvez donc écrire ce qui précède comme:

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
la source