Latest web development tutorials

ฟังก์ชั่นหลัว

ใน 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