루아 기능
루아에서는 문장과 표현식을 추상화하는 주요 방법이 함수이다. 일부 특수 작업을 처리하고 일부 값을 계산하는 데 사용할 수 있습니다.
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:
- function_body:
- result_params_comma_separated:
- 예
다음 예에서는 두 값의 크기를 비교하는 데 사용되는 매개변수 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