อ่าน 2 นาที
ต้นแบบฟังก์ชัน
ใน การเขียนโปรแกรมคอมพิวเตอร์ ต้นแบบ ฟังก์ชัน คือการ ประกาศ ฟังก์ชันที่ระบุชื่อฟังก์ชันและ ลาย เซ็นประเภท ( arity , ประเภทข้อมูล ของ พารามิเตอร์ และ ประเภทการส่งคืน )...
ต้นแบบฟังก์ชัน
ในการเขียนโปรแกรมคอมพิวเตอร์ต้นแบบฟังก์ชัน คือการประกาศฟังก์ชันที่ระบุชื่อฟังก์ชันและลายเซ็นประเภท ( arity , ประเภทข้อมูลของพารามิเตอร์และประเภทการส่งคืน ) แต่ละเว้นส่วนเนื้อหาของฟังก์ชัน ในขณะที่คำจำกัดความของฟังก์ชันระบุว่าฟังก์ชันทำงานอย่างไร ("การใช้งาน") ต้นแบบฟังก์ชันระบุเพียงอินเทอร์เฟซ กล่าวคือ ประเภทข้อมูลที่เข้าและ ออกจากฟังก์ชัน คำว่า "ต้นแบบฟังก์ชัน" ถูกใช้โดยเฉพาะในบริบทของภาษาการเขียนโปรแกรมCและC++ซึ่งการวางการประกาศล่วงหน้าของฟังก์ชันในไฟล์ส่วนหัวช่วยให้สามารถแบ่งโปรแกรมออกเป็นหน่วยการแปล กล่าวคือ เป็นส่วนๆ ที่คอมไพเลอร์สามารถแปลแยกกันเป็นไฟล์ออบเจ็กต์เพื่อรวมเข้าด้วยกันโดยลิงเกอร์เป็นไฟล์ปฏิบัติการหรือไลบรารีการประกาศฟังก์ชันอยู่ก่อนคำจำกัดความของฟังก์ชัน โดยให้รายละเอียดของชื่อ ประเภทการส่งคืน และคลาสการจัดเก็บพร้อมกับคุณลักษณะอื่นๆ ที่เกี่ยวข้อง[ 1 ]
ต้นแบบฟังก์ชันสามารถใช้ได้เมื่อ: [ 2 ]
- การกำหนด ExternalType
- การสร้างส่วนอินเทอร์เฟซ
ในต้นแบบฟังก์ชัน ชื่อพารามิเตอร์นั้นเป็นตัวเลือก (และในภาษา C/C++ จะมีขอบเขตตามต้นแบบ ฟังก์ชัน ซึ่งหมายความว่าขอบเขตของพารามิเตอร์จะสิ้นสุดเมื่อสิ้นสุดต้นแบบ) อย่างไรก็ตาม ประเภทของพารามิเตอร์นั้นจำเป็นต้องมี พร้อมกับตัวดัดแปลงทั้งหมด (เช่น ถ้าเป็นตัวชี้หรือการอ้างอิงถึง พารามิเตอร์ คงที่ ) ยกเว้นคำว่าconstเพียงอย่างเดียว
ในการเขียนโปรแกรมเชิงวัตถุ อินเทอร์เฟซและเมธอดนามธรรมทำหน้าที่คล้ายคลึงกัน มาก
ตัวอย่าง
พิจารณาต้นแบบฟังก์ชันต่อไปนี้:
void sum ( int a , int b );หรือในกรณีที่ไม่ได้ระบุพารามิเตอร์:
void sum ( int , int );หรือใช้กับประเภทการส่งคืนค่าแบบต่อท้าย ( เฉพาะ C++ ):
auto sum ( int , int ) -> void ;ต้นแบบฟังก์ชันประกอบด้วยลายเซ็นฟังก์ชัน ชื่อของฟังก์ชัน ประเภทของค่าที่ส่งคืน และตัวระบุการเข้าถึง ในกรณีนี้ ชื่อของฟังก์ชันคือ "sum" ลายเซ็นฟังก์ชันกำหนดจำนวนพารามิเตอร์และประเภทของพารามิเตอร์ ประเภทของค่าที่ส่งคืนคือ "void" ซึ่งหมายความว่าฟังก์ชันจะไม่ส่งคืนค่าใดๆ โปรดทราบว่าชื่อพารามิเตอร์ในตัวอย่างแรกนั้นเป็นตัวเลือก
การใช้งาน
ในภาษาซีเวอร์ชันแรกๆ หากฟังก์ชันไม่ได้ถูกประกาศไว้ก่อนหน้านี้ และชื่อของฟังก์ชันนั้นปรากฏอยู่ในนิพจน์ตามด้วยวงเล็บเปิด ฟังก์ชันนั้นจะถูกประกาศโดยปริยายว่าเป็นฟังก์ชันที่ส่งคืนค่าintและจะไม่มีการสันนิษฐานใดๆ เกี่ยวกับอาร์กิวเมนต์ ในกรณีนี้ คอมไพเลอร์จะไม่สามารถตรวจสอบความถูกต้องของจำนวนและชนิดของอาร์กิวเมนต์ในระหว่างการคอมไพล์ได้ มาตรฐาน C99กำหนดให้ใช้ต้นแบบฟังก์ชัน (prototypes)
#include <limits.h> #include <stdio.h>// ต้นแบบฟังก์ชันchar myFunction ( int a );int main ( void ) { putchar ( myFunction ( -1 )); // การเรียกที่จัดรูปแบบถูกต้องputchar ( myFunction ( 1.5 )); // คำเตือนของคอมไพเลอร์: ประเภทไม่ตรงกันputchar ( myFunction ( "IncorrectArgType" )); // คำเตือนของคอมไพเลอร์: ประเภทไม่ตรงกันputchar ( myFunction ()); // ข้อผิดพลาดของคอมไพเลอร์: อาร์กิวเมนต์น้อยเกินไป// แม้ว่าการเพิ่ม 1 ให้กับ INT_MAX จะทำให้เกิดข้อผิดพลาดการล้นของจำนวนเต็ม// แต่ไม่สามารถตรวจพบได้ในระหว่างการคอมไพล์putchar ( myFunction ( INT_MAX + 1 ));ส่งคืนค่า0 ; }// นิยามฟังก์ชันchar myFunction ( int n ) { if ( n > 0 ) { return '>' ; } else if ( n < 0 ) { return '<' ; } else { return '=' ; } }ฟังก์ชันMyFunctionคาดหวังว่าจะถูกเรียกใช้ด้วยอาร์กิวเมนต์ที่เป็นจำนวนเต็ม การใส่ต้นแบบฟังก์ชันจะแจ้งให้คอมไพเลอร์ทราบว่าฟังก์ชันรับอาร์กิวเมนต์ที่เป็นจำนวนเต็มหนึ่งตัว และช่วยให้คอมไพเลอร์ตรวจจับการเรียกใช้ที่ระบุไม่ถูกต้องได้
การสร้างอินเทอร์เฟซไลบรารี
การระบุ อินเทอร์เฟซสำหรับไลบรารีสามารถทำได้โดย การวางต้นแบบฟังก์ชันไว้ในไฟล์ส่วนหัว
การประกาศคลาส
ในภาษา C++ ต้นแบบฟังก์ชันยังถูกใช้ในการนิยาม คลาส ด้วย
ดูเพิ่มเติม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ต้นแบบฟังก์ชัน
ใน การเขียนโปรแกรมคอมพิวเตอร์ ต้นแบบ ฟังก์ชัน คือการ ประกาศ ฟังก์ชันที่ระบุชื่อฟังก์ชันและ ลาย เซ็นประเภท ( arity , ประเภทข้อมูล ของ พารามิเตอร์ และ ประเภทการส่งคืน )...
การใช้งาน
ในภาษาซีเวอร์ชันแรกๆ หากฟังก์ชันไม่ได้ถูกประกาศไว้ก่อนหน้านี้ และชื่อของฟังก์ชันนั้นปรากฏอยู่ในนิพจน์ตามด้วยวงเล็บเปิด ฟังก์ชันนั้นจะถูกประกาศโดยปริยายว่าเป็นฟังก์ชันที่ส่งคืนค่า int และจะไม่มีการสันนิษฐานใดๆ เกี่ยวกับอาร์กิวเมนต์ ในกรณีนี้...
การสร้างอินเทอร์เฟซไลบรารี
การระบุ อินเทอร์เฟซ สำหรับ ไลบรารี สามารถทำได้โดย การวางต้นแบบฟังก์ชันไว้ใน ไฟล์ส่วนหัว
การประกาศคลาส
ในภาษา C++ ต้นแบบฟังก์ชันยังถูกใช้ในการนิยาม คลาส ด้วย