ลบองค์ประกอบออกจากรายการหรืออาร์เรย์โดยไม่มีสิ่งประดิษฐ์ (ใด ๆ ) ใน Raku


9

ฉันได้ค้นหา Raku Documentation และหนังสือ & บทช่วยสอนมากมายและโพสต์ 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]
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.