Swift Combine: removeDuplicates() คุณสามารถใช้ในทางที่ผิดได้หากคุณไม่ได้อ่านข้อความนี้
มาเรียนรู้เกี่ยวกับ removeDuplicates() กันเถอะ ตามชื่อที่แนะนำ มันจะลบรายการที่ซ้ำกัน
มาเรียนรู้เกี่ยวกับ removeDuplicates() กันเถอะ ตามชื่อที่แนะนำ มันจะลบรายการที่ซ้ำกัน แต่มันทำงานในลักษณะที่แตกต่างออกไปเล็กน้อยอย่างที่คุณคาดหวัง
การใช้ removeDuplicates() — นี่ไม่ใช่สิ่งที่คุณคาดหวัง
let words = ["apple", "apple", "fruit", "apple", "mango", "watermelon", "apple"]
words.publisher
.removeDuplicates()
.sink {
print($0) // apple, fruit, apple, mango, watermelon, apple
}
แต่ผลลัพธ์กลับตรงกันข้ามกับที่คุณคาดไว้อย่างสิ้นเชิง!
ค่าที่ซ้ำกันยังคงอยู่…
เฉพาะองค์ประกอบที่สองขององค์ประกอบที่ซ้ำกันเท่านั้นที่apple
จะถูกลบ...
ทำไมถึงเป็นเช่นนั้น?
ในการเขียนโปรแกรมเชิงโต้ตอบ ทุกสิ่งจะเข้ามาหาคุณเป็นลำดับของเหตุการณ์นั้น
หากมีเหตุการณ์ที่แตกต่างกันสองรายการที่กำลังจะมาถึงและหากเป็นค่าเดียวกัน Apple ในกรณีนี้ก็จะเริ่มลบรายการที่ซ้ำกันเหล่านั้น
บทสรุปและคำเตือน!!!
removeDuplicate()
ทำงานเฉพาะเมื่อค่าเดียวกันปรากฏขึ้นติดต่อกัน