Lua berfungsi


Dalam Lua, fungsi ialah cara utama untuk abstrak pernyataan dan ungkapan. Ia boleh digunakan untuk mengendalikan beberapa tugas khas dan untuk mengira beberapa nilai.

Lua menyediakan banyak fungsi terbina dalam yang boleh anda panggil dengan mudah dalam program anda Contohnya, fungsi print() boleh mencetak parameter yang diluluskan pada konsol.

Fungsi Lua mempunyai dua kegunaan utama:

  • 1. Selesaikan tugas yang ditentukan, dalam hal ini fungsi digunakan sebagai pernyataan panggilan;

  • 2. Kira dan pulangkan nilai Dalam kes ini, fungsi digunakan sebagai ungkapan pernyataan tugasan.
  • Definisi fungsi

Format definisi fungsi bahasa pengaturcaraan Lua adalah seperti berikut:

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

Penghuraian:

  • opsional_function_scope

  • : Parameter ini adalah pilihan untuk menentukan sama ada fungsi itu adalah fungsi global atau fungsi tempatan. parameter ialah fungsi global. Jika anda perlu menetapkan fungsi menjadi setempat Fungsi memerlukan kata kunci
  • setempat
  • .
  • function_name:

  • Menentukan nama fungsi.
  • argument1, argument2, argument3..., argumentn:

  • Parameter fungsi, berbilang parameter dipisahkan dengan koma Dihidupkan, fungsi juga tidak boleh mengambil parameter.
  • function_body:

  • Function body, blok pernyataan kod yang perlu dilaksanakan dalam fungsi.
  • result_params_comma_separated:

  • Nilai pulangan fungsi, fungsi bahasa Lua boleh mengembalikan berbilang nilai, setiap nilai dipisahkan oleh dipisahkan koma.
  • Contoh
  • Contoh berikut mentakrifkan fungsi

    max()

    , dengan parameter num1, num2, yang digunakan untuk membandingkan saiz dua nilai ​​dan kembalikan nilai maksimum:

    --[[ 函数返回两个值的最大值 --]]
    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))
    Hasil pelaksanaan kod di atas ialah:

    两值比较最大值为 	10
    两值比较最大值为 	6

    Dalam Lua, kita boleh menghantar fungsi sebagai parameter kepada fungsi, seperti yang ditunjukkan dalam contoh berikut :

    myprint = function(param)
       print("这是打印函数 -   ##",param,"##")
    end
    
    function add(num1,num2,functionPrint)
       result = num1 + num2
       -- 调用传递的函数参数
       functionPrint(result)
    end
    myprint(10)
    -- myprint 函数作为参数传递
    add(2,5,myprint)

    Hasil pelaksanaan kod di atas ialah:

    这是打印函数 -   ##	10	##
    这是打印函数 -   ##	7	##

    Nilai pulangan berbilang

    Fungsi Lua boleh mengembalikan berbilang nilai hasil, seperti string.find , yang mengembalikan rentetan yang sepadan "subskrip mula dan tamat" (jika tiada rentetan yang sepadan, kembalikan sifar).

    > s, e = string.find("www.php.cn", "php") 
    > print(s, e)
    5	10

    Dalam fungsi Lua, berbilang nilai boleh dikembalikan dengan menyenaraikan senarai nilai yang akan dikembalikan selepas pemulangan, seperti:

    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}))

    Hasil pelaksanaan kod di atas ialah:

    23	3

    Parameter pembolehubah

    Fungsi Lua boleh menerima nombor pembolehubah parameter Sama seperti bahasa C, tiga titik (...) digunakan dalam parameter fungsi senarai untuk menunjukkan bahawa fungsi mempunyai parameter berubah-ubah.

    Lua meletakkan parameter fungsi dalam jadual yang dipanggil arg

    #arg

    mewakili bilangan parameter yang dihantar. Sebagai contoh, kami mengira purata beberapa nombor:

    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))

    Hasil pelaksanaan kod di atas ialah:

    总共传入 6 个数
    平均值为	5.5