Swift Combine: removeDuplicates() คุณสามารถใช้ในทางที่ผิดได้หากคุณไม่ได้อ่านข้อความนี้

Nov 30 2022
มาเรียนรู้เกี่ยวกับ 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()ทำงานเฉพาะเมื่อค่าเดียวกันปรากฏขึ้นติดต่อกัน