1. ν¨μ
μ€λμ ν¨μμ λν΄μ μμλ³΄κ² μ΅λλ€. 루μμμ ν¨μλ νλμ κ°μ²΄(?)μ
λλ€.
function foo()foo!!
print("foo!!")foo()
end
a = foo -- aλΌλ μ΄λ¦μΌλ‘ fooλ₯Ό λ겨μ€λ€.foo!!
a() -- κ·Έλ¬λ©΄ a λ ν¨μκ° λλ€.
print(type(a)) -- aμ typeμ μ μ μλ€.function
μ΄μ²λΌ κ°λ¨νκ² fooλΌλ ν¨μλ₯Ό λ§λ€μ΄ λ΄€μ΅λλ€.
μ΄μ λ§€κ°λ³μλ₯Ό λ겨μ λ°νκ°μ λ°λ ν¨μλ₯Ό λ§λ€μ΄ λ³΄κ² μ΅λλ€.
function sum(a,b)a+b= 3
return a+bprint ("a+b=",sum(1,2))
end
sumμ a,b λΌλ λ§€κ° λ³μλ₯Ό λ°μ a+b μ°μ°μ ν ν λ°νν΄ μ£Όλ ν¨μ μ
λλ€. μ΄μ μ’ νΉμ΄ν 루μλ§μ κ°λ³ λ§€κ°λ³ μ, 볡μ λ°ν ν¨μλ₯Ό λ§λ€μ΄ λ³ΌκΉμ?
function sum(...) -- κ°λ³ λ§€κ°λ³μλ₯Ό λ°λλ€.sum= 5
local sum = 0print ( sum(1,2,3,4,5) )
for i = 1, #arg do sum = sum + argi end
return "sum=", sum
end
(...) λ§€κ°λ³μλ₯Ό λ°μΌλ©΄ argλΌλ ν
μ΄λΈμ #arg κ° λ§νΌ λ°μ μ μμ΅λλ€. κ·ΈλΌ for λ¬Έμ λλ©΄μ sumμ κ³μ°ν΄μ "sum=" κ³Ό κ°μ΄ κ²°κ³Όλ₯Ό λ°νν©λλ€.
2. λ³μ λ²μ
ν¨μλ μ¬μ©νκΈ°μ λ°λΌ λ³νν μ μλκ² λ§μμ μ²μ²ν λ€μν λ°©λ²μ μ€λͺ
νκ² μ΅λλ€. λμ λ³μμ λ²μ(scope)μ λν΄μ κ°λ¨νκ² μμ λ‘ μ΄ν΄ λ³΄κ² μ΅λλ€.
outside = 12
function scope()
local inside = 2 -- insideλ local μμλ§ μΈ μ μλλ‘ μ μΈνλ€.scope()
print (inside)
end
print(outside) -- outside λ μ‘΄μ¬ ν΄λ ...1
print(inside) -- insideλ μ‘΄μ¬νμ§ μλλ€. nil λ°νnil
κ°μ μ£Όμ λ‘ λ€λ₯Έ μλ₯Ό λ³΄κ² μ΅λλ€.
function scope1()1
local inside = 1scope1()
function scope2()
print (inside) -- μμ ν¨μμ local λ³μμ μ κ·Ό ν μ μμ΅λλ€.
end
scope2()
end
local μ΄ μμ΄ λ³μλ₯Ό μ μΈνλ€λ©΄ ν¨μ λ°μμλ κ°μ μ°Έμ‘°/λ³κ²½ ν μ μμ΅λλ€.
3. λ§λ¬΄λ¦¬
λ³μ λ²μλ μ΄ λ°μλ λ€μν μ΄μλ₯Ό λ§λ€ μ μμ΅λλ€. μλ₯Ό λ€λ©΄ do ~ end λ¬Έμμλ local λ‘ λ²μλ₯Ό νμ ν μ μκ³ function μ체λ λ³μμ κ°μ΄ λ²μ(scope)λ₯Ό νμ νμ¬ μ¬μ©ν μ μμ΅λλ€. λν localμ μ¬μ©νμ§ μμΌλ©΄ μ μ λ²μ λ΄μμ λ³μλ ν¨μ μ체λ₯Ό μ κ·Ό/λ³κ²½ν μ μμ΅λλ€.