E D R , A S I H C RSS

LUA_4

1. ν•¨μˆ˜

μ˜€λŠ˜μ€ ν•¨μˆ˜μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. λ£¨μ•„μ—μ„œ ν•¨μˆ˜λ„ ν•˜λ‚˜μ˜ 객체(?)μž…λ‹ˆλ‹€.

function foo()
print("foo!!")
end
foo()
foo!!
a = foo -- aλΌλŠ” μ΄λ¦„μœΌλ‘œ fooλΌ λ„˜κ²¨μ€λ‹€.
a() -- 그러면 a 도 ν•¨μˆ˜κ°€ λœλ‹€.
foo!!
print(type(a)) -- a의 type을 μ•Œ 수 μžˆλ‹€.
function

이처럼 κ°„λ‹¨ν•˜κ²Œ fooλΌλŠ” ν•¨μˆ˜λΌ λ§Œλ“€μ–΄ λ΄€μŠ΅λ‹ˆλ‹€.

function ν•¨μˆ˜λͺ…() end ν˜•νƒœλ‘œ ν•¨μˆ˜λΌ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

이제 λ§€κ°œλ³€μˆ˜λΌ λ„˜κ²¨μ„œ λ°˜ν™˜κ°’μ„ λ°›λŠ” ν•¨μˆ˜λΌ λ§Œλ“€μ–΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

function sum(a,b)
return a+b
end
print ("a+b=",sum(1,2))
a+b= 3

sum은 a,b λΌλŠ” 맀개 λ³€μˆ˜λΌ λ°›μ•„ a+b 연산을 ν•œ ν›„ λ°˜ν™˜ν•΄ μ£ΌλŠ” ν•¨μˆ˜ μž…λ‹ˆλ‹€. 이제 μ€ νŠΉμ΄ν•œ λ£¨μ•„λ§Œμ˜ κ°€λ³€ λ§€κ°œλ³€ 수, 볡수 λ°˜ν™˜ ν•¨μˆ˜λΌ λ§Œλ“€μ–΄ λ³ΌκΉŒμš”?

function sum(...) -- κ°€λ³€ λ§€κ°œλ³€μˆ˜λΌ λ°›λŠ”λ‹€.
local sum = 0
for i = 1, #arg do sum = sum + argi end
return "sum=", sum
end
print ( sum(1,2,3,4,5) )
sum= 5

(...) λ§€κ°œλ³€μˆ˜λΌ λ°›μœΌλ©΄ argλΌλŠ” ν…Œμ΄λΈ”μ— #arg 개 만큼 받을 수 μžˆμŠ΅λ‹ˆλ‹€. 그럼 for 문을 λŒλ©΄μ„œ sum을 κ³„μ‚°ν•΄μ„œ "sum=" κ³Ό 같이 κ²°κ³ΌλΌ λ°˜ν™˜ν•©λ‹ˆλ‹€.

2. λ³€μˆ˜ λ²”μœ„

ν•¨μˆ˜λŠ” μ‚¬μš©ν•˜κΈ°μ— 따라 λ³€ν˜•ν•  수 μžˆλŠ”κ²Œ λ§Žμ•„μ„œ 천천히 λ‹€μ–‘ν•œ 방법을 μ„λͺ…ν•˜κ² μŠ΅λ‹ˆλ‹€. λŒ€μ‹  λ³€μˆ˜μ˜ λ²”μœ„(scope)에 λŒ€ν•΄μ„œ κ°„λ‹¨ν•˜κ²Œ 예제둜 μ‚΄νŽ΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

outside = 1
function scope()
local inside = 2 -- insideλŠ” local μ—μ„œλ§Œ μ“Έ 수 μžˆλ„λ‘ μ„ μ–Έν•œλ‹€.
print (inside)
end
scope()
2
print(outside) -- outside λŠ” 쑴재 해도 ...
1
print(inside) -- insideλŠ” μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€. nil λ°˜ν™˜
nil

같은 주제둜 λ‹€λ₯Έ μ˜ˆλΌ λ³΄κ² μŠ΅λ‹ˆλ‹€.

function scope1()
local inside = 1
function scope2()
print (inside) -- μƒμœ„ ν•¨μˆ˜μ˜ local λ³€μˆ˜μ— μ ‘κ·Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
end
scope2()
end
scope1()
1

local 이 없이 λ³€μˆ˜λΌ μ„ μ–Έν•œλ‹€λ©΄ ν•¨μˆ˜ λ°–μ—μ„œλ„ 값을 μ°Έμ‘°/λ³€κ²½ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

3. 마무리

λ³€μˆ˜ λ²”μœ„λŠ” 이 밖에도 λ‹€μ–‘ν•œ μ΄μŠˆλΌ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. μ˜ˆλΌ λ“€λ©΄ do ~ end λ¬Έμ—μ„œλ„ local 둜 λ²”μœ„λΌ ν•œμ •ν•  수 있고 function μžμ²΄λ„ λ³€μˆ˜μ™€ 같이 λ²”μœ„(scope)λΌ ν•œμ •ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ local을 μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ©΄ μ „μ—­ λ²”μœ„ λ‚΄μ—μ„œ λ³€μˆ˜λ‚˜ ν•¨μˆ˜ μžμ²΄λΌ μ ‘κ·Ό/λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:37
Processing time 0.0217 sec