Elimina un elemento da un elenco o da un array senza l'artefatto (Qualsiasi) in Raku


9

Ho cercato la documentazione di Raku e diversi libri e tutorial e diversi post di Stackoverflow per imparare come eliminare un elemento da un elenco / array in modo pulito, cioè senza avere il (Qualsiasi) al posto dell'elemento eliminato

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

Ciò si traduce in [3 18 4 (Any) 92 14 30] e quindi non posso eseguire alcuna operazione su di esso, ad esempio non posso applicarlo [+].

C'è un modo per eliminare un elemento da un elenco / array senza quello (qualsiasi) ?

Risposte:


12

Sì. Utilizzando il metodo splice :

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]

Oppure potresti usare il modulo Adverb :: Eject , così puoi scrivere quanto sopra come:

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]
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.