Lua - ฟังก์ชั่น

ฟังก์ชันคือกลุ่มของคำสั่งที่ทำงานร่วมกัน คุณสามารถแบ่งรหัสของคุณออกเป็นฟังก์ชันแยกกันได้ การแบ่งรหัสของคุณระหว่างฟังก์ชันต่างๆนั้นขึ้นอยู่กับคุณ แต่ในทางตรรกะแล้วการแบ่งมักจะไม่ซ้ำกันดังนั้นแต่ละฟังก์ชันจึงทำงานเฉพาะ

ภาษา Lua มีวิธีการในตัวมากมายที่โปรแกรมของคุณสามารถเรียกใช้ได้ ตัวอย่างเช่นวิธีการprint() เพื่อพิมพ์อาร์กิวเมนต์ที่ส่งผ่านเป็นอินพุตในคอนโซล

ฟังก์ชั่นเป็นที่รู้จักด้วยชื่อต่างๆเช่นวิธีการหรือรูทีนย่อยหรือโพรซีเดอร์เป็นต้น

การกำหนดฟังก์ชัน

รูปแบบทั่วไปของคำจำกัดความของวิธีการในภาษาโปรแกรม Lua มีดังนี้ -

optional_function_scope function function_name( argument1, argument2, argument3........, 
argumentn)
function_body
return result_params_comma_separated
end

ความหมายวิธีการในการเขียนโปรแกรมภาษา Lua ประกอบด้วยส่วนหัววิธีการและร่างกายวิธีการ นี่คือส่วนต่างๆของวิธีการ -

  • Optional Function Scope- คุณสามารถใช้คำหลักในพื้นที่เพื่อ จำกัด ขอบเขตของฟังก์ชันหรือละเว้นส่วนขอบเขตซึ่งจะทำให้เป็นฟังก์ชันส่วนกลาง

  • Function Name- นี่คือชื่อจริงของฟังก์ชัน ชื่อฟังก์ชันและรายการพารามิเตอร์ประกอบกันเป็นลายเซ็นฟังก์ชัน

  • Arguments- อาร์กิวเมนต์เป็นเหมือนตัวยึด เมื่อเรียกใช้ฟังก์ชันคุณจะส่งค่าไปยังอาร์กิวเมนต์ ค่านี้เรียกว่าพารามิเตอร์หรืออาร์กิวเมนต์จริง รายการพารามิเตอร์อ้างถึงประเภทลำดับและจำนวนอาร์กิวเมนต์ของวิธีการ อาร์กิวเมนต์เป็นทางเลือก นั่นคือวิธีการอาจไม่มีข้อโต้แย้ง

  • Function Body - เนื้อความของวิธีการประกอบด้วยชุดของคำสั่งที่กำหนดสิ่งที่วิธีการทำ

  • Return - ใน Lua เป็นไปได้ที่จะคืนค่าหลายค่าโดยทำตามคีย์เวิร์ด return โดยใช้ค่าส่งกลับที่คั่นด้วยเครื่องหมายจุลภาค

ตัวอย่าง

ต่อไปนี้เป็นซอร์สโค้ดสำหรับฟังก์ชันที่เรียกว่า max(). ฟังก์ชันนี้รับสองพารามิเตอร์ num1 และ num2 และส่งกลับค่าสูงสุดระหว่างสอง -

--[[ function returning the max between two numbers --]]
function max(num1, num2)

   if (num1 > num2) then
      result = num1;
   else
      result = num2;
   end

   return result; 
end

อาร์กิวเมนต์ของฟังก์ชัน

ถ้าฟังก์ชันจะใช้อาร์กิวเมนต์จะต้องประกาศตัวแปรที่ยอมรับค่าของอาร์กิวเมนต์ ตัวแปรเหล่านี้เรียกว่าformal parameters ของฟังก์ชัน

พารามิเตอร์ที่เป็นทางการจะทำงานเหมือนกับตัวแปรท้องถิ่นอื่น ๆ ภายในฟังก์ชันและถูกสร้างขึ้นเมื่อเข้าสู่ฟังก์ชันและถูกทำลายเมื่อออก

เรียกใช้ฟังก์ชัน

ในขณะที่สร้างฟังก์ชัน Lua คุณให้คำจำกัดความว่าฟังก์ชันนี้มีไว้ทำอะไร ในการใช้วิธีการคุณจะต้องเรียกใช้ฟังก์ชันนั้นเพื่อทำงานที่กำหนดไว้

เมื่อโปรแกรมเรียกใช้ฟังก์ชันการควบคุมโปรแกรมจะถูกโอนไปยังฟังก์ชันที่เรียก ฟังก์ชันที่เรียกว่าทำงานตามที่กำหนดไว้และเมื่อคำสั่ง return ถูกเรียกใช้งานหรือเมื่อถึงจุดสิ้นสุดของฟังก์ชันฟังก์ชันจะส่งคืนการควบคุมโปรแกรมกลับไปยังโปรแกรมหลัก

ในการเรียกใช้เมธอดคุณเพียงแค่ส่งพารามิเตอร์ที่ต้องการพร้อมกับชื่อเมธอดและหากเมธอดส่งคืนค่าคุณก็สามารถเก็บค่าที่ส่งคืนได้ ตัวอย่างเช่น -

function max(num1, num2)

   if (num1 > num2) then
      result = num1;
   else
      result = num2;
   end

   return result; 
end

-- calling a function
print("The maximum of the two numbers is ",max(10,4))
print("The maximum of the two numbers is ",max(5,6))

เมื่อเรารันโค้ดด้านบนเราจะได้ผลลัพธ์ดังต่อไปนี้

The maximum of the two numbers is 	10
The maximum of the two numbers is 	6

การกำหนดและการส่งผ่านฟังก์ชัน

ใน Lua เราสามารถกำหนดฟังก์ชันให้กับตัวแปรและยังสามารถส่งผ่านไปเป็นพารามิเตอร์ของฟังก์ชันอื่นได้ นี่คือตัวอย่างง่ายๆสำหรับการกำหนดและส่งผ่านฟังก์ชันเป็นพารามิเตอร์ใน Lua

myprint = function(param)
   print("This is my print function -   ##",param,"##")
end

function add(num1,num2,functionPrint)
   result = num1 + num2
   functionPrint(result)
end

myprint(10)
add(2,5,myprint)

เมื่อเรารันโค้ดด้านบนเราจะได้ผลลัพธ์ดังต่อไปนี้

This is my print function -   ##	10	##
This is my print function -   ##	7	##

ฟังก์ชันที่มีอาร์กิวเมนต์ตัวแปร

เป็นไปได้ที่จะสร้างฟังก์ชันที่มีอาร์กิวเมนต์ตัวแปรใน Lua โดยใช้ "... " เป็นพารามิเตอร์ เราสามารถเข้าใจสิ่งนี้ได้โดยดูตัวอย่างที่ฟังก์ชันจะคืนค่าเฉลี่ยและสามารถรับอาร์กิวเมนต์ตัวแปรได้

function average(...)
   result = 0
   local arg = {...}
   for i,v in ipairs(arg) do
      result = result + v
   end
   return result/#arg
end

print("The average is",average(10,5,3,4,5,6))

เมื่อเรารันโค้ดด้านบนเราจะได้ผลลัพธ์ดังต่อไปนี้

The average is	5.5