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) ?

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]
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.