การเขียนโปรแกรมในภาษา Swift นั้นเต็มไปด้วยความน่าสนใจ และเครื่องมือที่เป็นประโยชน์มากมาย วันนี้เราจะมาพูดถึงสองคำที่มีบทบาทสำคัญในการเขียนฟังก์ชัน: `return` และ `yield` โดยเฉพาะการใช้งานในภาษา Swift ซึ่งอาจจะเกิดความสับสนให้กับผู้เริ่มต้นใช้งาน ผู้เขียนจะอธิบายถึงการทำงานของคำเหล่านี้ พร้อมกับตัวอย่างโค้ด และยกตัวอย่าง use case ในชีวิตจริงให้เห็นภาพชัดเจนมากขึ้น
เข้าใจ `return`
`return` เป็นคำที่ใช้ในการส่งค่ากลับจากฟังก์ชัน ในเมื่อฟังก์ชันทำงานเสร็จสิ้น ค่าที่ระบุต้องถูกส่งกลับให้กับเรียกฟังก์ชัน ตัวอย่างการใช้งานที่ง่ายเริ่มจากนี่เลย
ในโค้ดด้านบน เราได้สร้างฟังก์ชันที่ชื่อว่า `addNumbers` ซึ่งรับค่าถึง 2 ตัวคือ `a` และ `b` ซึ่งเป็นประเภท Int และส่งค่ากลับเป็นผลรวมของตัวเลขทั้งสอง โดยใช้คำสั่ง `return` ในการส่งค่าผลลัพธ์กลับไป
เข้าใจ `yield`
ใน Swift คำว่า `yield` ไม่ได้เป็นองค์ประกอบหลักเหมือนคำว่า `return` หากแต่ Swift ได้นำแนวคิดจากการเขียนโปรแกรมแบบ generator มาใช้ การสร้าง generator ใน Swift เราใช้ `yield` เพื่อส่งค่าคืนไปให้กับผู้เรียกฟังก์ชันในขณะที่ฟังก์ชันยังมีการทำงานอยู่ และฟังก์ชันนั้นสามารถหยุดทำงานและกลับมาเริ่มใหม่ได้เมื่อมีการเรียกใช้งานอีกครั้ง
อย่างไรก็ตาม ใน Swift 5.0 เป็นต้นมา มีการเพิ่มเติม `AsyncSequence` ที่ทำให้สามารถทำงานกับชุดข้อมูลที่เป็น asynchronous อย่างชัดเจนมากขึ้น
ตัวอย่างการใช้งาน generator อาจเป็นประมาณนี้:
ในตัวอย่างนี้ เราใช้ `AnyIterator` เพื่อสร้าง generator ที่ส่งค่าตัวเลขที่เพิ่มขึ้นเรื่อยๆ โดยใช้ `yield` ในการส่งค่าผลลัพธ์กลับไป ให้เห็นว่าเราสามารถเรียกใช้งาน generator นั้นได้หลายครั้ง
ตัวอย่างนี้แสดงถึงการดึงข้อมูลอย่างเป็นขั้นตอนจาก API ข้อมูลผู้ใช้ โดยสามารถส่งค่าผลลัพธ์กลับมาได้เมื่อทำงานเสร็จสิ้น ซึ่งไม่ทำให้โปรแกรมเสียเวลาไปมากในขณะที่กำลังรอข้อมูล
การเลือกใช้ `return` หรือ `yield` ขึ้นอยู่กับบริบทของโปรแกรมว่าเราต้องการส่งค่ากลับไปในลักษณะใด หากมันคือการส่งค่าผลลัพธ์ของการคำนวณ เราก็ควรใช้ `return` แต่ถ้าต้องการประมวลผลข้อมูลที่มากขึ้นและทำงานอย่างต่อเนื่อง ให้เราเลือกใช้ `yield` แทน
หากคุณสนใจที่จะเรียนรู้เกี่ยวกับภาษา Swift และการเขียนโปรแกรมแบบลึกซึ้งมากขึ้น อย่าลืมเข้าร่วมเรียนที่ EPT (Expert-Programming-Tutor) ที่นี่เรามีหลักสูตรที่เหมาะสมกับทุกระดับ อย่าพลาดโอกาสในการพัฒนาทักษะการพัฒนาซอฟต์แวร์ของคุณไปพร้อมกันกับผู้เชี่ยวชาญ!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: java c# vb.net python c c++ machine_learning web database oop cloud aws ios android
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM