Löschen Sie ein Element aus einer Liste oder einem Array ohne das (beliebige) Artefakt in Raku

9

Ich habe die Raku-Dokumentation und mehrere Bücher und Tutorials sowie mehrere Stackoverflow-Beiträge durchsucht, um zu erfahren, wie ein Element sauber aus einer Liste / einem Array gelöscht wird, dh ohne das (Beliebige) anstelle des gelöschten Elements

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

Dies führt zu [3 18 4 (Beliebig) 92 14 30], sodass ich keine Operation ausführen kann, z. B. keine Anwendung [+].

Gibt es eine Möglichkeit, ein Element aus einer Liste / einem Array ohne dieses (Beliebig) zu löschen ?

Lars Malmsteen
quelle

Antworten:

12

Ja. Verwenden der Spleißmethode :

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]

Oder Sie können das Adverb :: Eject- Modul verwenden, um Folgendes zu schreiben:

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
quelle