เมื่อพูดถึงการเขียนโปรแกรม ในภาษา Delphi Object Pascal เรามักจะได้ยินคำว่า `return` และ `yield` ซึ่งทั้งสองคำนี้เปรียบเสมือนสองตัวช่วยที่ทำให้การทำงานของโปรแกรมมีประสิทธิภาพมากขึ้น แต่คุณทราบหรือไม่ว่าทั้งสองมีวิธีการทำงานที่แตกต่างกันอย่างไร? มาลองดูรายละเอียดกัน!
1. Return
`return` คือคำสั่งที่ใช้เพื่อส่งค่ากลับจากฟังก์ชันไปยังจุดที่เรียกฟังก์ชันนั้นๆ โดยเมื่อถึงคำสั่ง `return` ฟังก์ชันจะสิ้นสุดการทำงานทันที โค้ดที่อยู่หลังคำสั่งนี้จะไม่ถูกดำเนินการต่อ
2. Yield
`yield` เป็นคำสั่งที่ใช้สำหรับการสร้าง Generator ซึ่งอนุญาตให้ฟังก์ชันกลับค่าภายในหลายครั้ง โดยที่ไม่ต้องสิ้นสุดฟังก์ชัน ทำให้ฟังก์ชันสามารถ “หยุด” ชั่วคราวและกลับค่าหลายค่าตามที่ต้องการ โดยค่าที่ได้จะถูกเก็บสถานะของฟังก์ชันล่าสุดเมื่อถึง `yield` ดังนั้น เมื่อต้องการเรียกค่าถัดไป สามารถทำได้ด้วยความง่ายดาย
เริ่มต้นด้วยการใช้งาน `return` ในการสร้างฟังก์ชันที่คำนวณค่าผลรวมของจำนวนเต็ม
ฟังก์ชันข้างต้นทำการรับค่าหมายเลขสองตัว `a` และ `b` และคำนวณผลรวมของทั้งสอง ส่งกลับไปยังตัวแปร `total` ผ่านทาง `Result`
ตัวอย่างการใช้งาน `yield` ในการสร้าง Generator ที่จะคืนค่าตัวเลขตามลำดับฟิโบนัชชี
ในตัวอย่างนี้ ฟังก์ชัน `FibonacciGen` จะสร้างอาร์เรย์ของตัวเลขฟิโบนัชชี 10 ตัว คืนค่าผ่านทาง `Result` โดยไม่มีการใช้งาน `return` ในความหมายแบบฟังก์ชัน แต่การใช้ `yield` จะทำให้สร้างลำดับการทำงานให้มีประสิทธิภาพยิ่งขึ้น
ใช้ `return` โดยทั่วไปในระบบคำนวณหรือโปรแกรมที่ต้องการส่งข้อมูลผลลัพธ์กลับ เช่น โปรแกรมคำนวณค่าใช้จ่ายในธุรกิจ เพื่อให้สามารถจัดการกับข้อมูลได้อย่างมีประสิทธิภาพ
ในขณะที่การใช้ `yield` เหมาะกับการดำเนินการที่ต้องใช้การสร้างลำดับข้อมูลแบบต่อเนื่อง เช่น โปรแกรมโหลดวิดีโอสตรีมมิ่ง ที่สามารถโหลดวิดีโอตอนแรกในขณะที่ยังโหลดต่อไปยังช่วงที่สองได้เรื่อยๆ ซึ่งทำให้ประสบการณ์ผู้ใช้งานดีขึ้น
ทั้ง `return` และ `yield` มีบทบาทสำคัญใน Delphi Object Pascal ด้วยความแตกต่างในลักษณะการใช้งาน โดย `return` เหมาะกับการสร้างฟังก์ชันที่ส่งค่ากลับทันที ขณะที่ `yield` จะเหมาะสำหรับการสร้าง Generator ที่ต้องการคืนค่าหลายค่าในครั้งเดียว
สุดท้าย หากคุณสนใจในการเรียนรู้และพัฒนาทักษะการเขียนโปรแกรม ท่านสามารถเริ่มต้นการเรียนรู้ที่ 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
Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com
