Usuń element z listy lub tablicy bez artefaktu (Dowolny) w Raku

9

Przeszukałem Dokumentację Raku oraz kilka książek i samouczków oraz kilka wpisów Stackoverflow, aby dowiedzieć się, jak usunąć element z listy / tablicy w sposób czysty, tj. Bez umieszczania (Dowolnego) w miejscu usuniętego elementu

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

Powoduje to [3 18 4 (Any) 92 14 30], więc nie mogę na nim wykonać żadnej operacji, np. Nie mogę [+]na nią aplikować .

Czy istnieje sposób na usunięcie elementu z listy / tablicy bez tego (Any) ?

Lars Malmsteen
źródło

Odpowiedzi:

12

Tak. Za pomocą metody łączenia :

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]

Lub możesz użyć modułu Adverb :: Eject , abyś mógł zapisać powyższe jako:

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
źródło