루아 기능


루아에서는 문장과 표현식을 추상화하는 주요 방법이 함수이다. 일부 특수 작업을 처리하고 일부 값을 계산하는 데 사용할 수 있습니다.

Lua는 프로그램에서 쉽게 호출할 수 있는 다양한 내장 함수를 제공합니다. 예를 들어 print() 함수는 전달된 매개변수를 콘솔에 인쇄할 수 있습니다.

Lua 함수에는 두 가지 주요 용도가 있습니다.

  • 1. 지정된 작업을 완료합니다. 이 경우 함수는 호출 문으로 사용됩니다.

  • 2. 값을 계산하여 반환합니다. 이 경우 함수는 대입문의 표현식으로 사용됩니다.
  • 함수 정의

Lua 프로그래밍 언어 함수 정의 형식은 다음과 같습니다.

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

파싱:

  • 선택적_함수_범위

  • : 이 매개변수는 함수가 전역 함수인지 로컬 함수인지 지정하는 선택사항입니다. 설정하지 않은 경우 이 매개변수가 끝납니다. 매개변수는 전역 함수입니다. 함수를 로컬로 설정해야 하는 경우 이 함수에는
  • local
  • 키워드가 필요합니다.
  • function_name:

  • 함수 이름을 지정합니다.
  • argument1, 인수2, 인수3..., 인수n:

  • 함수 매개변수, 여러 매개변수는 쉼표로 구분됩니다. On에서는 함수가 매개변수를 사용할 수도 없습니다.
  • function_body:

  • 함수 본문, 함수에서 실행해야 하는 코드 문 블록입니다.
  • result_params_comma_separated:

  • 함수 반환 값, Lua 언어 함수는 여러 값을 반환할 수 있으며, 각 값은 쉼표로 구분됩니다.
  • 다음 예에서는 두 값의 크기를 비교하는 데 사용되는 매개변수 num1, num2를 사용하여

    max()

    함수를 정의합니다. 그리고 최대값을 반환합니다:

    --[[ 函数返回两个值的最大值 --]]
    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와 같은 여러 결과 값을 반환할 수 있습니다. , 일치하는 문자열 "시작 및 끝 첨자"를 반환합니다(일치하는 문자열이 없으면 nil을 반환).

    > s, e = string.find("www.php.cn", "php") 
    > 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}))

    위 코드의 실행 결과 is:

    23	3

    가변 매개변수

    Lua 함수는 C 언어와 유사하게 세 개의 점(...)이 함수 매개변수에 사용됩니다. 함수에 가변 매개변수가 있음을 나타내는 목록입니다.

    Lua는 arg라는 테이블에 함수의 매개변수를 배치합니다.

    #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