《루아프로그래밍》 독서노트 제5장: 함수
print("hello world")
print "hello world"
Lua는 대상식 호출에 대해서도 특수한 문법인 사칭 조작부호를 제공했다.Lua에서 o.foo(o,x)와 o:foo(x)는 등가이며, o.foo를 호출할 때 o를 함수의 첫 번째 인자로 은밀하게 사용합니다.루아 프로그램은 루아로 작성된 함수를 사용할 수도 있고 c 언어로 작성된 함수를 호출할 수도 있다.Lua의 함수 호출에서 실삼 수량은 형삼 수량과 같을 필요가 없다. Lua는 실삼의 수량을 자동으로 조정하여 형삼과 일치하게 하고 그 메커니즘은 다중 할당치와 같다.
5.1 다중 반환값
Lua는 함수가 여러 개의 되돌아오는 값을 되돌려줍니다. Lua의 몇 개의 미리 정의된 함수는 여러 개의 값을 되돌려주는 것입니다.예컨대string.find. 일치하는 문자의 시작 인덱스를 되돌려줍니다.
s,e = string.find("hello Lua", "Lua")
print(s, e) -->7, 9
Return 키워드 뒤에 모든 반환 값만 표시하면 Lua에서 여러 반환 값을 반환할 수 있습니다.
function foo()
return 1, 2
end
x, y = foo()
주의해야 할 것은 함수가 호출될 때 일련의 표현식의 마지막 요소가 호출될 때만 모든 반환 값을 얻을 수 있다는 것이다.이 일련의 표현식은 네 가지 상황을 포함하는데 그것이 바로 다중부치, 함수 호출 시 전송되는 실참, 테이블 구조식,return 문장이다.
function foo2() return a, b end
x,y = foo2() -->x=a, y = b
x,y = f00()2, 20 -->x = a, y = 20, foo2 。
또한 한 쌍의 괄호에 함수를 호출하여 하나의 결과만 반환하도록 할 수도 있습니다.
print((foo2()) -->a
다중 반환 값에 대해 또 하나의 특수한 함수 - unpack이 있습니다.매개변수로 배열을 적용하고 다음 표 1부터 해당 배열의 모든 요소를 반환합니다.
print(unpack(10, 20, 30)) -->10 20 30
unpack의 중요한 용도는 '일반 호출' 에서 사용되며, 모든 함수를 동적으로 실제 참조로 호출할 수 있습니다.
5.2 길이 변환 매개변수
매개 변수표의 세 점(...)은 이 함수가 서로 다른 수량의 형삼을 받아들인다는 것을 나타낸다.함수가 길어지는 매개 변수에 접근하려면 세 개의 점을 사용합니다.
function add(...)
local s = 0
for i, v inpairs {...} do
s = s+ v
end
end
return s
end
표현식 {...}은 길어진 매개변수로 구성된 배열을 나타냅니다.특정 함수 호출을 추적하는 방법이 있습니다.
function foo1()
print("callinng foo:", ...)
return foo(...)
end
가변 매개 변수가 있는 함수 역시 임의의 수량의 고정 매개 변수를 가질 수 있지만 고정 매개 변수는 반드시 길어지는 매개 변수 앞에 두어야 한다.select를 사용하여 길어진 매개변수에 액세스할 수 있습니다.
select(n,...) --> n
select('#', ...) --> ‘#’,
5.3 구명 실참
구명 매개 변수는 실참의 배열 순서를 고려하지 않고 이름을 통해 매개 변수를 지정하는 것을 가리킨다.만약 함수가 대량의 매개 변수를 가지고 있는데, 그 중 대부분이 선택할 수 있다면, 이런 매개 변수 전달 스타일은 매우 유용할 것이다.Lua는 Table을 통해 구명 실참과 유사한 기능을 실현합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.