Видаліть елемент зі списку чи масиву без артефакту (Any) у Раку


9

Я шукав Документацію Раку, кілька книг і підручників та кілька публікацій Stackoverflow, щоб дізнатися, як видалити елемент зі списку / масиву чисто, тобто не маючи (Будь-який) на місці видаленого елемента

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

Це призводить до [3 18 4 (Будь-який) 92 14 30], тому я не можу робити жодних операцій над ним, наприклад, я не можу застосувати [+]його.

Чи є спосіб видалити елемент із списку / масиву без цього (Будь-який) ?

Відповіді:


12

Так. Використовуючи метод зрощення :

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]

Або ви можете використовувати модуль Adverb :: Eject , щоб ви могли записати вищезазначене як:

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]
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.