ฟังก์ชั่นหลัว
ใน Lua, ฟังก์ชั่นเป็นวิธีการหลักของงบนามธรรมและการแสดงออก ทั้งสองสามารถนำมาใช้ในการจัดการกับงานพิเศษบางอย่างก็ยังสามารถนำมาใช้ในการคำนวณค่าบางอย่าง
Lua ให้ฟังก์ชั่นในตัวจำนวนมากที่คุณสามารถเรียกพวกเขาเช่นการพิมพ์ () ฟังก์ชันสามารถส่งผ่านพารามิเตอร์การพิมพ์บนคอนโซลในโปรแกรม
ฟังก์ชั่น Lua มีสองจุดประสงค์หลักคือ
- 1. ให้งานที่ได้รับมอบหมายในกรณีนี้จะใช้เป็นคำสั่งที่เรียกใช้ฟังก์ชัน;
- 2. การคำนวณและผลตอบแทนที่คุ้มค่าซึ่งในกรณีนี้ฟังก์ชั่นที่ใช้เป็นการแสดงออกที่ได้รับมอบหมาย
นิยามฟังก์ชัน
Lua ฟังก์ชั่นการเขียนโปรแกรมภาษาที่กำหนดไว้ในรูปแบบต่อไปนี้:
optional_function_scope function function_name( argument1, argument2, argument3..., argumentn) function_body return result_params_comma_separated end
ความละเอียด:
- optional_function_scope : พารามิเตอร์นี้เป็นฟังก์ชั่นเสริมมีการพัฒนาฟังก์ชั่นระดับโลกหรือฟังก์ชั่นท้องถิ่นท้ายของพารามิเตอร์ไม่ได้ตั้งค่าฟังก์ชั่นระดับโลกถ้าคุณจำเป็นต้องตั้งค่าฟังก์ชั่นการทำงานบางส่วนจำเป็นต้องใช้คำหลักในท้องถิ่น
- ฟังก์ชัน: ระบุชื่อฟังก์ชั่น
- argument1, argument2, argument3 ... , argumentn : พารามิเตอร์ฟังก์ชั่นหลายพารามิเตอร์คั่นด้วยเครื่องหมายจุลภาคยังสามารถทำงานได้โดยไม่มีพารามิเตอร์
- function_body: ร่างกายของฟังก์ชันงบรหัสฟังก์ชั่นบล็อกจะต้องมีการดำเนินการ
- result_params_comma_separated: ฟังก์ชั่นคืนค่าฟังก์ชั่นภาษา Lua สามารถคืนค่าหลายค่าแต่ละคั่นด้วยเครื่องหมายจุลภาค
ตัวอย่าง
ตัวอย่างต่อไปนี้กำหนดสูงสุด () ฟังก์ชันพารามิเตอร์ num1, num2, ใช้ในการเปรียบเทียบขนาดของสองค่าและส่งกลับค่าสูงสุด:
--[[ 函数返回两个值的最大值 --]] function max(num1, num2) if (num1 > num2) then result = num1; else result = num2; end return result; end -- 调用函数 print("两值比较最大值为 ",max(10,4)) print("两值比较最大值为 ",max(5,6))
รหัสข้างต้นจะถูกดำเนินการเป็นผลมาจาก:
两值比较最大值为 10 两值比较最大值为 6
Lua เราสามารถทำงานเป็นพารามิเตอร์ที่ส่งผ่านไปยังฟังก์ชั่นตัวอย่างต่อไปนี้:
myprint = function(param) print("这是打印函数 - ##",param,"##") end function add(num1,num2,functionPrint) result = num1 + num2 -- 调用传递的函数参数 functionPrint(result) end myprint(10) -- myprint 函数作为参数传递 add(2,5,myprint)
รหัสข้างต้นจะถูกดำเนินการเป็นผลมาจาก:
这是打印函数 - ## 10 ## 这是打印函数 - ## 7 ##
ค่าที่ส่งคืนหลาย
ฟังก์ชั่น Lua สามารถกลับค่าผลหลายอย่างเช่น string.find ซึ่งจะส่งกลับสตริงที่ตรงกัน "จุดเริ่มต้นและจุดสิ้นสุดของห้อย" (ถ้าไม่มีผลตอบแทนที่จับคู่สตริงไม่มี)
> s, e = string.find("www.w3big.com", "w3big") > print(s, e) 5 10
ฟังก์ชั่น Lua หลังจากผลตอบแทนคุ้มค่าที่จะกลับไปยังรายการของรายการสามารถคืนค่าหลายค่าเช่น:
function maximum (a) local mi = 1 -- 最大值索引 local m = a[mi] -- 最大值 for i,val in ipairs(a) do if val > m then mi = i m = val end end return m, mi end print(maximum({8,10,23,12,5}))
รหัสข้างต้นจะถูกดำเนินการเป็นผลมาจาก:
23 3
พารามิเตอร์ตัวแปร
ฟังก์ชั่น Lua สามารถยอมรับจำนวนตัวแปรของการขัดแย้งและภาษา C คล้ายกับการใช้สามจุดรายการพารามิเตอร์ฟังก์ชั่น ( ... ) หมายถึงฟังก์ชั่นที่มีตัวแปร
ค่าฟังก์ชัน Lua ในตารางที่เรียกว่าหาเรื่อง, #arg หมายถึงจำนวนของพารามิเตอร์ที่ส่งผ่าน
ตัวอย่างเช่นเราคำนวณค่าเฉลี่ยของจำนวนน้อยนี้:
function average(...) result = 0 local arg={...} for i,v in ipairs(arg) do result = result + v end print("总共传入 " .. #arg .. " 个数") return result/#arg end print("平均值为",average(10,5,3,4,5,6))
รหัสข้างต้นจะถูกดำเนินการเป็นผลมาจาก:
总共传入 6 个数 平均值为 5.5