Different ways to make Method Parameter Optional
ปานประดับ บุญตัน 650710567
พารามิเตอร์ทางเลือก (Optional Parameters) ช่วยให้ไม่ต้องจำเป็นระบุค่าพารามิเตอร์ทุกตัวเมื่อมีการเรียกใช้เมธอด หรือไม่ต้องส่งค่าพารามิเตอร์บางตัวในฟังก์ชันได้ ใน C# มีทั้งหมด 4 วิธี
1.การใช้ค่าเริ่มต้น (Default Value)
ช่วยให้สามารถกำหนดค่าเริ่มต้นให้กับพารามิเตอร์ในนิยามของเมธอดได้ เมื่อไม่มีการส่งค่าพารามิเตอร์เมื่อเรียกใช้ฟังก์ชัน ระบบจะใช้ค่าที่ตั้งไว้เป็นค่าเริ่มต้น และพารามิเตอร์ที่มีค่าเริ่มต้นต้องอยู่ในตำแหน่งสุดท้ายของรายการพารามิเตอร์ในเมธอดเสมอ
บรรทัดที่ 5 : มีการกำหนดค่าเริ่มต้น lastName = "Doe"
ในตำแหน่งสุดท้ายของพารามิเตอร์
บรรทัดที่ 15 : สามารถเรียกใช้เมธอดIntroduceYourself
โดยส่งแค่พารามิเตอร์ firstName
ได้ หากไม่ระบุ lastName
ค่าจะเป็น "Doe"
output :
2.การใช้การ Overloading เมธอด (Method Overloading)
เป็นการสร้างเมธอดที่มีชื่อเดียวกันแต่จำนวนพารามิเตอร์ต่างกัน การ Overloadingไม่ใช่แนวทางในการสร้างพารามิเตอร์ทางเลือกจริงๆ แต่เป็นการทำให้ผลลัพธ์คล้ายกับพารามิเตอร์ทางเลือก
บรรทัดที่ 4 : เมธอด my_mul
แรกรับอาร์กิวเมนต์ 1 ตัว
บรรทัดที่ 8 : เมธอด my_mul
อันที่สองรับอาร์กิวเมนต์ 3 ตัว
ทำให้ไม่จำเป็นต้องส่งพารามิเตอร์ทุกตัว
output :
3.การใช้ OptionalAttribute
ใช้พารามิเตอร์ทางเลือกได้โดยการใช้ OptionalAttribute ต้องเพิ่มเนมสเปซ System.Runtime.InteropServices
แล้วใช้คำว่า [Optional]
หน้าพารามิเตอร์ในฟังก์ชัน ค่าเริ่มต้นคือ 0
บรรทัดที่ 2 : เพิ่มเนมสเปซ System.Runtime.InteropServices
บรรทัดที่ 5 : พารามิเตอร์ num2
มีค่าคือ 0
อัตโนมัติเมื่อไม่ได้ส่งค่าเข้ามา เพราะ int เป็นชนิดข้อมูลที่มีค่าเริ่มต้นเป็น 0 ใน C#
output :
4.การใช้คำสั่ง Params
การใช้พารามิเตอร์ทางเลือกโดยการใช้คีย์เวิด params
จะทำให้ส่งพารามิเตอร์จำนวนเท่าใดก็ได้ไปที่เมธอด แต่ใช้ได้กับพารามิเตอร์แค่ตัวเดียว เนื่องจากพารามิเตอร์ที่จะใช้ ต้องเป็นพารามิเตอร์ตัวสุดท้าย ถึงจะไม่ใช่แนวทางของพารามิเตอร์ทางเลือกโดยตรง แต่ก็สามารถให้ผลลัพธ์เดียวกันกับพารามิเตอร์ทางเลือกได้
บรรทัดที่ 4 : เฟังก์ชัน my_mul
รับพารามิเตอร์ a1
โดยรับค่าพารามิเตอร์จำนวนเท่าใดก็ได้ เข้าไปในเมธอด และค่าที่ส่งมาจะถูกเก็บอยู่ในอาเรย์ a1
การใช้ params
ช่วยให้ส่งค่าหลายตัวได้โดยไม่จำเป็นต้องส่งในรูปแบบอาเรย์
บรรทัดที่ 21 : มีการเรียกฟังก์ชัน my_mul
โดยส่งค่า a=3
และส่งค่า3
และ 100
ให้กับ a1
ซึ่งจะถูกเก็บในอาเรย์ a1 = {3, 100}
output :
เปรียบเทียบกับ C,Java,Python
🔗Parameter Optional in C
ภาษา C ไม่รองรับ default parameters หมายความว่าทุกพารามิเตอร์ต้องระบุค่าเมื่อมีการเรียกใช้ฟังก์ชัน หากไม่ระบุค่าเริ่มต้น ก็จะไม่มีการกำหนดค่าเริ่มต้นให้กับพารามิเตอร์ ซึ่งทำให้ภาษา C ไม่มี parameter optional
แต่มีแนวคิดที่สามารถใช้เพื่อจำลองพฤติกรรมคล้ายๆ กับการมีค่าเริ่มต้นได้ ซึ่งก็คือการใช้พารามิเตอร์ที่รับค่าหลายค่า (variable arguments) ผ่านการใช้ไลบรารี <stdarg.h>
บรรทัดที่ 2 : นำเข้าไลบรารี <stdarg.h>
ช่วยให้สามารถใช้พารามิเตอร์ที่รับค่าหลายค่าในฟังก์ชันได้
บรรทัดที่ 3 : ในพารามิเตอร์ของฟังก์ชัน sum
ตัวสุดท้ายใช้...
เพื่อบอกให้รับจำนวนพารามิเตอร์ที่ไม่จำกัด หรือไม่ส่งค่าก็ได้
บรรทัดที่ 15 : มีการส่งค่า 3
ไปที่ num
และส่งค่า 5, 10, 15
ไปยัง ...
เพื่อเป็นค่าที่จะถูกรวมกันในฟังก์ชัน
output :
🔗Parameter Optional in Java
Java ไม่มีการรองรับ Parameter Optional โดยตรง แต่ Java สามารถใช้วิธีต่างๆ เพื่อจำลองพฤติกรรมของ Parameter Optional ได้ เช่น การทำ overloding ,varargs
1.การทำ Overloding
วิธีการนี้เริ่มต้นด้วยเมธอดที่รับเฉพาะพารามิเตอร์ที่จำเป็น จากนั้นสามารถเพิ่มเมธอดที่รองรับพารามิเตอร์ทางเลือกหนึ่งตัว และเพิ่มเมธอดที่รองรับสองพารามิเตอร์ทางเลือกไปเรื่อย ๆ โดยการสร้าง method หลายตัวที่มีชื่อเดียวกัน แต่รับพารามิเตอร์ที่ต่างกัน
บรรทัดที่ 3 : เมธอด display
แรกมีการรับพารามิเตอร์แค่ตัวเดียว คือ mandatory
บรรทัดที่ 8 : เมธอด display
ที่สองมีการรับพารามิเตอร์ 2 ตัว คือ mandatory
และ optional
การทำ overloding ทำให้ไม่จำเป็นต้องส่งพารามิเตอร์ทุกตัว
output :
2.การใช้ Vararge
ช่วยให้สามารถประกาศเมธอดที่รองรับอาร์กิวเมนต์ 0
หรือมากกว่าของประเภทที่ระบุได้ โดยการใช้จุดไข่ปลา ...
ก่อนการประกาศพารามิเตอร์
บรรทัดที่ 2 : การใช้String... args
ช่วยให้เมธอดสามารถรับค่าจำนวนเท่าใดก็ได้ที่เป็นชนิด String
และจะถูกเก็บไว้ในอาเรย์ args
หรือไม่ส่งค่าอะไรมาเลยก็ได้ อาเรย์ args
ก็จะเป็นอาเรย์ว่าง
output :
🔗Parameter Optional in Python
ใน Python มี Optional Parameter ช่วยกำหนดค่าเริ่มต้นให้กับพารามิเตอร์ที่ไม่จำเป็น สามารถทำได้โดยการใช้ตัวดำเนินการกำหนดค่า หรือคำสั่ง Python **kwargs
1.ตัวอย่างการใช้ ตัวดำเนินการกำหนดค่า(Default Parameter)
บรรทัดที่ 1 : มีการกำหนดค่าเริ่มต้นให้กับพารามิเตอร์ b โดยตั้งค่า b = 999
ในตำแหน่งสุดท้ายของพารามิเตอร์ หากไม่มีการส่งค่ามา
บรรทัดที่ 4 : คำสั่ง function(2, 3)
ส่งค่าทั้ง a
และ b
ดังนั้นผลลัพธ์คือ 2 + 3 = 5
บรรทัดที่ 5 : คำสั่ง function(1)
ส่งค่าเฉพาะ a
โดยที่ b
ใช้ค่าเริ่มต้น 999
ผลลัพธ์คือ 1 + 999 = 1000
output :
2.คำสั่ง Python **kwargs
รูปแบบพิเศษ**kwargs
ใช้เพื่อในการส่งอาร์กิวเมนต์ที่ใช้แบบคีย์-ค่า (key-value pair) โดยใช้ชื่อkwargs
พร้อมกับ **
ไว้ข้างหน้าจะทำให้ฟังก์ชันสามารถรับอาร์กิวเมนต์ได้หลายค่าพร้อมกัน โดยไม่จำเป็นต้องรู้ล่วงหน้าว่าจะส่งมากี่ค่า และสามารถระบุชื่อ (คีย์) ให้กับแต่ละค่าได้
บรรทัดที่ 1 : ฟังก์ชัน myFun
ถูกกำหนดให้รับ kwargs
ที่สามารถรับอาร์กิวเมนต์ความยาวแปรผัน
บรรทัดที่ 5 : ส่งอาร์กิวเมนต์หลายตัวที่มี key (ชื่อ) และ value (ค่า) คือ first='Geeks', mid='for',
และ last='Geeks'
เข้าถึงได้โดยใช้ kwargs.items()
output :
Presentation & Video
Video Presentation
Slide Presentation
References
GeeksforGeeks. (2019, Mar 29 ). Different ways to make method parameter optional in C#. GeeksforGeeks. https://www.geeksforgeeks.org/different-ways-to-make-method-parameter-optional-in-c-sharp/
ตัวอย่าง code ในส่วนการใช้ค่าเริ่มต้น (Default Value) ของ C# :
IronPDF. (2023, August 29). C# default parameters guide. IronPDF. https://ironpdf.com/blog/net-help/csharp-default-parameters-guide/
เนื้อหา Parameter Optional in C พร้อมตัวอย่าง code :
Rajesh P.S. (n.d.). C# - Optional parameters. Net-informations. https://net-informations.com/c/functions/parameters.htm
เนื้อหา Parameter Optional in Java ในส่วนการทำ Overlodingและการใช้ Vararge :
Eugen. (2018, May 3). Optional parameters in Java. Stackify. https://stackify.com/optional-parameters-java/
ตัวอย่างโค้ด Parameter Optional in Java ในเรื่อง การทำ Overloding และการใช้ Vararge และเนื้อหาVararge บางส่วน :
Codedamn. (2023, August 5). What are optional parameters in Java?. Codedamn. https://codedamn.com/news/java/what-are-optional-parameters-in-java
เนื้อหา Parameter Optional in Python :
Pranathi M. (2023, Aug 23). How to pass optional parameters to a function in Python. Tutorialspoint. https://www.tutorialspoint.com/how-to-pass-optional-parameters-to-a-function-in-python
เนื้อหาคำสั่ง Python **kwargs :
GeeksforGeeks. (2024, Jun 19). Args and kwargs in Python. GeeksforGeeks. https://www.geeksforgeeks.org/args-kwargs-python/
Last updated