March 8, 2012

Visual Basic: ฟังก์ชันและการทำงานย่อย

การทำงานย่อยใน Visual Basic สามารถแบ่งได้เป็น 2 อย่างคือ Function และ Sub

ความแตกต่างคือ Function เป็นการทำงานย่อยที่ (ควรจะ) ส่งค่าแบบ ByVal (ส่งค่าของตัวแปรเข้าไป ถ้ามีการเปลี่ยนค่าระหว่างทำงาน ตัวแปรต้นทางจะไม่เปลี่ยน) และเมื่อทำงานเสร็จเรียบร้อยก็ (ควรจะ) ส่งค่าคืนกลับมา เช่น

หรือถ้าจะแหกฎนั้น

สังเกตว่าต้องมีการคืนค่าเสมอนะครับ (แม้จะเขียนโดยที่ไม่ให้คืนค่าก็ตาม)



ส่วนการใช้ Sub จะถูกมองคล้ายๆ การแยกส่วนของ code ออกเป็นหลายๆ ส่วน ตัวแปรส่วนใหญ่ส่งเข้าไปแบบ ByRef (เมื่อเปลี่ยนค่าตัวแปร ตัวแปรที่ต้นทางจะเปลี่ยนด้วย) และเมื่อทำงานเสร็จจะไม่มีการคืนค่าครับ

ความแตกต่างอีกอย่างคือการที่ Sub สามารถ Handles เหตุการณ์ต่างๆ เช่นการคลิกเมาส์ได้ โดยเปลี่ยนไปส่งผ่านตัวแปรที่เกี่ยวกับ event 2 ตัวแทน (ซึ่งจะเหมือนกับการดับเบิลคลิกเข้าไปเขียน code) ดังนี้

(อันที่จริงแล้ว Function ก็ Handles ได้ แต่มักไม่ทำกัน เพราะผิด concept)

สรุปคือตัดสินใจจากสถานการณ์นั้นๆ ว่าจะใช้ Function (มีการคืนค่า) หรือจะใช้ Sub (จัดระเบียบ code, อิงกับ event ภายนอก) ให้เหมาะกับงานด้วยนะครับ

1 comment:

  1. โค้ดรองสุดท้ายน่าจะผิดนะ ถ้าเป็น Function ก็ต้องมี Return ครับ

    ReplyDelete