[lua] 자색 고양이 루아 튜토리얼 - 명령 보전 - L1-01-10.사용자 정의 함수
L1[function]01. 함수 정의 및 호출
함수의 정의와 개념은 말할 것이 없다
루아의 함수 성명과 호출은 선후 순서가 있는 선성명 후 호출이다
함수는 변수의 일종이기 때문에 함수를 변수 간에 자유롭게 값을 부여할 수 있지만 함수 변수와 표 변수의 차이가 많지 않은 것은 메모리 주소 바늘을 저장하는 것이다
aa=function(x, y) - 빨간색 부분은 이른바 루아의 익명 함수이지만 정말 명실상부하지 않다print(x, y)endaa(1,2)
L1[function]02. 역할 영역과 반환 값
L1[function]03. 복수 반환값
function test(x, y,z)return x+1, y+1, z+1--end a, b, c=test(1,2,3)print(a, b, c)
작은 지식:return은 함수 내에서 약간의 주의사항을 얻습니다.return은 함수 내에서 일반적으로 함수 코드의 마지막 줄(공행 end 같은 것은 자연히 계산되지 않습니다.)return 문장 뒤에 다른 코드를 강제로 넣으면 오류가 발생할 수 있습니다function test(x,y,z)
return x+1,y+1,z+1
print("1")-- D:\Program Files (x86)\zerobrane\bin\lua53.exe: E:\lua\test15.lua:3: 'end' expected (to close 'function' at line 1) near 'print'
end
a,b,c=test(1,2,3)
print(a,b,c)
그런데 어떤 코드는 리턴 뒤에 적혀있어요. 괜찮아요. 그런데 몇 개만else elseif end...function test1(a,b)
if (a>b) then
return " "
elseif (a==b) then
return " "
else
-- a
return " "
end
end
L1[function]04. 매개 변수의 전달
함수 의 매개 변수 는 함수 의 국부 변수 이다
만약에 함수의 매개 변수가 일반 변수가 아니라 대상이 흔히 볼 수 있는 대상이라면 주의해야 한다. 예를 들어table 형식표 변수에 저장된 것은 사실 하나의 바늘이 함수 매개 변수로 전달된 것이고 하나의 바늘 주소 매개 변수가 대상이 되어 함수 내부에서 이 대상의 바늘에 대해 일련의 조작을 하는 것은 수치 문자열처럼 바깥의 이 변수에 영향을 주지 않는 것이 아니다-- 100
function test2(a)
if (type(a)=="table") then
a[1]=100
else
print("not table")
end
end
xx={1,2,3,4,5}--
for v,k in pairs(xx) do--
print(v,k)
end
print("=================")
test2(xx) -- xx
for v,k in pairs(xx) do--
print(v,k)
end
--
결과
1 2 2 3 4 5 ===================== 1 100 2 3 4 5 프로그램은 0.20초에 완성되었다(pid: 16008).
작은 지식: 루아의 패키지 이해
https://www.cnblogs.com/zzy-frisrtblog/p/5864209.html
작은 지식: upvalue는 사실 c하의 정적 국부 변수로 이해할 수 있다
정적 부분 변수의 일반적인 특징:
1. 함수체 내에서 정적 변수를 정의하는 동시에 초기화되면 이후 프로그램은 초기화 작업을 하지 않습니다.
2.auto 자동 변수는 함수가 호출되고 종료됨에 따라 존재하고 사라지며,static류 국부 변수는 사라지지 않습니다.그것은 그 함수가 호출되든 안 되든 항상 존재할 것이다.그러나 이 변수는 계속 존재하지만 사용할 수 없습니다.만약 정의된 함수를 다시 호출할 때, 함수를 계속 사용할 수 있으며, 이전에 호출된 후에 남은 값을 저장할 수 있습니다.다시 말하면 Static 유형의 내부 변수는 특정한 함수에서만 사용할 수 있지만 저장 공간을 차지하는 변수이다.
L1[function]05. 옵션 매개변수
작은 지식 가변 매개 변수는 말할 것도 없고 매개 변수의 수량이 확실하지 않을 때의 선택은... 그러나 또 다른 특수한 상황, 예를 들어 매개 변수에 값이 섞여 있으면 모든 매개 변수를 훑어보면 문제가 생길 수 있다function test(...)
-- 1
local tempTable=table.pack(...)
--
if (type(tempTable)=="table") then
for v,k in pairs(tempTable) do
print(k)
end
else
print("not table")
end
end
test(1,2,3,4,5,6,7,8,9,0)
특수한 상황, 예를 들어 매개 변수에 값이 섞여 있으면 모든 매개 변수에 문제가 생길 수 있습니다. 이 상황을 피하기 위해 변수 변수의 함수 기본 구조는 이렇습니다.function test(...)
-- 1
local tempTable=table.pack(...)
print(tempTable.n)-- n table.pack nil
--
if (type(tempTable)=="table") then
-- value ,key
for i=1,tempTable.n do
print(tempTable[i])
end
else
print("not table")
end
end
test(1,2,nil,4,5,nil,nil,8,9,0)
결과
1 2 nil 4 5 nil nil 8 9 0
가변 매개 변수는 고정 매개 변수와 혼합할 수도 있지만 고정 매개 변수는 반드시 앞에서 가변 매개 변수를 깔아야 한다
function test(a,b,c,…)
작은 지식: 함수를 호출할 때 얼마나 많은 매개 변수를 일일이 대응해야 하는지, 쉽게 쓰지 않으면 비울 수 있을 것 같지만, 루아에서는 일일이 대응해야 하는지, 안 되면 대응하는 위치에nil을 붙여도 돼요. 틀리지 않아요.function test1(a,b,c)
print(a,b,c)
end
test1(1,,3)-- D:\Program Files (x86)\zerobrane\bin\lua53.exe: E:\lua\test18.lua:21: unexpected symbol near ','
test1(1,nil,3)
123
작은 지식: 함수 기본값의 쓰기 매개 변수는nil입니다. 초기값을 부여하면 되지만, 매개 변수 내용이false일 때 기본값이 잘못되었음을 주의하십시오.function test1(a,b,c)
--
a=a or 1
b=b or 2
c=c or 3
print(a,b,c)
end
test1(2,nil,4)
결과
2 2 4
물론 전달된 매개 변수의 내용은false일 수 없습니다. 기본값은 잘못된 값을 선택하지만 일반적인 상황에서는 나타나지 않습니다.function test1(a,b,c)
a=a or 1
b=b or 2
c=c or 3
print(a,b,c)
end
test1(false,nil,4)-- 1 2 4 false 1 1
123
L1[function]06. 가변 길이 매개변수
L1[function]07. 키 플러그인 함수 예
작은 지식: 키 플러그인의 루아 쓰기간단해요. 함수 쓰기가 좀 필요해요. 다른 건 없어요.
function QMPlugin.test()
end
다음으로 전송:https://www.cnblogs.com/zjl8455482/p/11222937.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
L1[function]03. 복수 반환값
function test(x, y,z)return x+1, y+1, z+1--end a, b, c=test(1,2,3)print(a, b, c)
작은 지식:return은 함수 내에서 약간의 주의사항을 얻습니다.return은 함수 내에서 일반적으로 함수 코드의 마지막 줄(공행 end 같은 것은 자연히 계산되지 않습니다.)return 문장 뒤에 다른 코드를 강제로 넣으면 오류가 발생할 수 있습니다function test(x,y,z)
return x+1,y+1,z+1
print("1")-- D:\Program Files (x86)\zerobrane\bin\lua53.exe: E:\lua\test15.lua:3: 'end' expected (to close 'function' at line 1) near 'print'
end
a,b,c=test(1,2,3)
print(a,b,c)
그런데 어떤 코드는 리턴 뒤에 적혀있어요. 괜찮아요. 그런데 몇 개만else elseif end...function test1(a,b)
if (a>b) then
return " "
elseif (a==b) then
return " "
else
-- a
return " "
end
end
L1[function]04. 매개 변수의 전달
함수 의 매개 변수 는 함수 의 국부 변수 이다
만약에 함수의 매개 변수가 일반 변수가 아니라 대상이 흔히 볼 수 있는 대상이라면 주의해야 한다. 예를 들어table 형식표 변수에 저장된 것은 사실 하나의 바늘이 함수 매개 변수로 전달된 것이고 하나의 바늘 주소 매개 변수가 대상이 되어 함수 내부에서 이 대상의 바늘에 대해 일련의 조작을 하는 것은 수치 문자열처럼 바깥의 이 변수에 영향을 주지 않는 것이 아니다-- 100
function test2(a)
if (type(a)=="table") then
a[1]=100
else
print("not table")
end
end
xx={1,2,3,4,5}--
for v,k in pairs(xx) do--
print(v,k)
end
print("=================")
test2(xx) -- xx
for v,k in pairs(xx) do--
print(v,k)
end
--
결과
1 2 2 3 4 5 ===================== 1 100 2 3 4 5 프로그램은 0.20초에 완성되었다(pid: 16008).
작은 지식: 루아의 패키지 이해
https://www.cnblogs.com/zzy-frisrtblog/p/5864209.html
작은 지식: upvalue는 사실 c하의 정적 국부 변수로 이해할 수 있다
정적 부분 변수의 일반적인 특징:
1. 함수체 내에서 정적 변수를 정의하는 동시에 초기화되면 이후 프로그램은 초기화 작업을 하지 않습니다.
2.auto 자동 변수는 함수가 호출되고 종료됨에 따라 존재하고 사라지며,static류 국부 변수는 사라지지 않습니다.그것은 그 함수가 호출되든 안 되든 항상 존재할 것이다.그러나 이 변수는 계속 존재하지만 사용할 수 없습니다.만약 정의된 함수를 다시 호출할 때, 함수를 계속 사용할 수 있으며, 이전에 호출된 후에 남은 값을 저장할 수 있습니다.다시 말하면 Static 유형의 내부 변수는 특정한 함수에서만 사용할 수 있지만 저장 공간을 차지하는 변수이다.
L1[function]05. 옵션 매개변수
작은 지식 가변 매개 변수는 말할 것도 없고 매개 변수의 수량이 확실하지 않을 때의 선택은... 그러나 또 다른 특수한 상황, 예를 들어 매개 변수에 값이 섞여 있으면 모든 매개 변수를 훑어보면 문제가 생길 수 있다function test(...)
-- 1
local tempTable=table.pack(...)
--
if (type(tempTable)=="table") then
for v,k in pairs(tempTable) do
print(k)
end
else
print("not table")
end
end
test(1,2,3,4,5,6,7,8,9,0)
특수한 상황, 예를 들어 매개 변수에 값이 섞여 있으면 모든 매개 변수에 문제가 생길 수 있습니다. 이 상황을 피하기 위해 변수 변수의 함수 기본 구조는 이렇습니다.function test(...)
-- 1
local tempTable=table.pack(...)
print(tempTable.n)-- n table.pack nil
--
if (type(tempTable)=="table") then
-- value ,key
for i=1,tempTable.n do
print(tempTable[i])
end
else
print("not table")
end
end
test(1,2,nil,4,5,nil,nil,8,9,0)
결과
1 2 nil 4 5 nil nil 8 9 0
가변 매개 변수는 고정 매개 변수와 혼합할 수도 있지만 고정 매개 변수는 반드시 앞에서 가변 매개 변수를 깔아야 한다
function test(a,b,c,…)
작은 지식: 함수를 호출할 때 얼마나 많은 매개 변수를 일일이 대응해야 하는지, 쉽게 쓰지 않으면 비울 수 있을 것 같지만, 루아에서는 일일이 대응해야 하는지, 안 되면 대응하는 위치에nil을 붙여도 돼요. 틀리지 않아요.function test1(a,b,c)
print(a,b,c)
end
test1(1,,3)-- D:\Program Files (x86)\zerobrane\bin\lua53.exe: E:\lua\test18.lua:21: unexpected symbol near ','
test1(1,nil,3)
123
작은 지식: 함수 기본값의 쓰기 매개 변수는nil입니다. 초기값을 부여하면 되지만, 매개 변수 내용이false일 때 기본값이 잘못되었음을 주의하십시오.function test1(a,b,c)
--
a=a or 1
b=b or 2
c=c or 3
print(a,b,c)
end
test1(2,nil,4)
결과
2 2 4
물론 전달된 매개 변수의 내용은false일 수 없습니다. 기본값은 잘못된 값을 선택하지만 일반적인 상황에서는 나타나지 않습니다.function test1(a,b,c)
a=a or 1
b=b or 2
c=c or 3
print(a,b,c)
end
test1(false,nil,4)-- 1 2 4 false 1 1
123
L1[function]06. 가변 길이 매개변수
L1[function]07. 키 플러그인 함수 예
작은 지식: 키 플러그인의 루아 쓰기간단해요. 함수 쓰기가 좀 필요해요. 다른 건 없어요.
function QMPlugin.test()
end
다음으로 전송:https://www.cnblogs.com/zjl8455482/p/11222937.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
function test(x,y,z)
return x+1,y+1,z+1
print("1")-- D:\Program Files (x86)\zerobrane\bin\lua53.exe: E:\lua\test15.lua:3: 'end' expected (to close 'function' at line 1) near 'print'
end
a,b,c=test(1,2,3)
print(a,b,c)
function test1(a,b)
if (a>b) then
return " "
elseif (a==b) then
return " "
else
-- a
return " "
end
end
함수 의 매개 변수 는 함수 의 국부 변수 이다
만약에 함수의 매개 변수가 일반 변수가 아니라 대상이 흔히 볼 수 있는 대상이라면 주의해야 한다. 예를 들어table 형식표 변수에 저장된 것은 사실 하나의 바늘이 함수 매개 변수로 전달된 것이고 하나의 바늘 주소 매개 변수가 대상이 되어 함수 내부에서 이 대상의 바늘에 대해 일련의 조작을 하는 것은 수치 문자열처럼 바깥의 이 변수에 영향을 주지 않는 것이 아니다
-- 100
function test2(a)
if (type(a)=="table") then
a[1]=100
else
print("not table")
end
end
xx={1,2,3,4,5}--
for v,k in pairs(xx) do--
print(v,k)
end
print("=================")
test2(xx) -- xx
for v,k in pairs(xx) do--
print(v,k)
end
--
결과
1 2 2 3 4 5 ===================== 1 100 2 3 4 5 프로그램은 0.20초에 완성되었다(pid: 16008).
작은 지식: 루아의 패키지 이해
https://www.cnblogs.com/zzy-frisrtblog/p/5864209.html
작은 지식: upvalue는 사실 c하의 정적 국부 변수로 이해할 수 있다
정적 부분 변수의 일반적인 특징:
1. 함수체 내에서 정적 변수를 정의하는 동시에 초기화되면 이후 프로그램은 초기화 작업을 하지 않습니다.
2.auto 자동 변수는 함수가 호출되고 종료됨에 따라 존재하고 사라지며,static류 국부 변수는 사라지지 않습니다.그것은 그 함수가 호출되든 안 되든 항상 존재할 것이다.그러나 이 변수는 계속 존재하지만 사용할 수 없습니다.만약 정의된 함수를 다시 호출할 때, 함수를 계속 사용할 수 있으며, 이전에 호출된 후에 남은 값을 저장할 수 있습니다.다시 말하면 Static 유형의 내부 변수는 특정한 함수에서만 사용할 수 있지만 저장 공간을 차지하는 변수이다.
L1[function]05. 옵션 매개변수
작은 지식 가변 매개 변수는 말할 것도 없고 매개 변수의 수량이 확실하지 않을 때의 선택은... 그러나 또 다른 특수한 상황, 예를 들어 매개 변수에 값이 섞여 있으면 모든 매개 변수를 훑어보면 문제가 생길 수 있다function test(...)
-- 1
local tempTable=table.pack(...)
--
if (type(tempTable)=="table") then
for v,k in pairs(tempTable) do
print(k)
end
else
print("not table")
end
end
test(1,2,3,4,5,6,7,8,9,0)
특수한 상황, 예를 들어 매개 변수에 값이 섞여 있으면 모든 매개 변수에 문제가 생길 수 있습니다. 이 상황을 피하기 위해 변수 변수의 함수 기본 구조는 이렇습니다.function test(...)
-- 1
local tempTable=table.pack(...)
print(tempTable.n)-- n table.pack nil
--
if (type(tempTable)=="table") then
-- value ,key
for i=1,tempTable.n do
print(tempTable[i])
end
else
print("not table")
end
end
test(1,2,nil,4,5,nil,nil,8,9,0)
결과
1 2 nil 4 5 nil nil 8 9 0
가변 매개 변수는 고정 매개 변수와 혼합할 수도 있지만 고정 매개 변수는 반드시 앞에서 가변 매개 변수를 깔아야 한다
function test(a,b,c,…)
작은 지식: 함수를 호출할 때 얼마나 많은 매개 변수를 일일이 대응해야 하는지, 쉽게 쓰지 않으면 비울 수 있을 것 같지만, 루아에서는 일일이 대응해야 하는지, 안 되면 대응하는 위치에nil을 붙여도 돼요. 틀리지 않아요.function test1(a,b,c)
print(a,b,c)
end
test1(1,,3)-- D:\Program Files (x86)\zerobrane\bin\lua53.exe: E:\lua\test18.lua:21: unexpected symbol near ','
test1(1,nil,3)
123
작은 지식: 함수 기본값의 쓰기 매개 변수는nil입니다. 초기값을 부여하면 되지만, 매개 변수 내용이false일 때 기본값이 잘못되었음을 주의하십시오.function test1(a,b,c)
--
a=a or 1
b=b or 2
c=c or 3
print(a,b,c)
end
test1(2,nil,4)
결과
2 2 4
물론 전달된 매개 변수의 내용은false일 수 없습니다. 기본값은 잘못된 값을 선택하지만 일반적인 상황에서는 나타나지 않습니다.function test1(a,b,c)
a=a or 1
b=b or 2
c=c or 3
print(a,b,c)
end
test1(false,nil,4)-- 1 2 4 false 1 1
123
L1[function]06. 가변 길이 매개변수
L1[function]07. 키 플러그인 함수 예
작은 지식: 키 플러그인의 루아 쓰기간단해요. 함수 쓰기가 좀 필요해요. 다른 건 없어요.
function QMPlugin.test()
end
다음으로 전송:https://www.cnblogs.com/zjl8455482/p/11222937.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
function test(...)
-- 1
local tempTable=table.pack(...)
--
if (type(tempTable)=="table") then
for v,k in pairs(tempTable) do
print(k)
end
else
print("not table")
end
end
test(1,2,3,4,5,6,7,8,9,0)
function test(...)
-- 1
local tempTable=table.pack(...)
print(tempTable.n)-- n table.pack nil
--
if (type(tempTable)=="table") then
-- value ,key
for i=1,tempTable.n do
print(tempTable[i])
end
else
print("not table")
end
end
test(1,2,nil,4,5,nil,nil,8,9,0)
function test1(a,b,c)
print(a,b,c)
end
test1(1,,3)-- D:\Program Files (x86)\zerobrane\bin\lua53.exe: E:\lua\test18.lua:21: unexpected symbol near ','
test1(1,nil,3)
function test1(a,b,c)
--
a=a or 1
b=b or 2
c=c or 3
print(a,b,c)
end
test1(2,nil,4)
function test1(a,b,c)
a=a or 1
b=b or 2
c=c or 3
print(a,b,c)
end
test1(false,nil,4)-- 1 2 4 false 1 1
L1[function]07. 키 플러그인 함수 예
작은 지식: 키 플러그인의 루아 쓰기간단해요. 함수 쓰기가 좀 필요해요. 다른 건 없어요.
function QMPlugin.test()
end
다음으로 전송:https://www.cnblogs.com/zjl8455482/p/11222937.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.