루아에서 함수의 인자를 어떻게 전달하나요?
_____A: 루아(Lua)에서 함수의 인자는 함수 호출 시 괄호 안에 쉼표(,)로 구분하여 전달합니다.
---
Q: 기본적인 함수 인자 전달 방법은 어떻게 되나요?
A: 함수 정의 시 매개변수를 소괄호 안에 적고, 호출 시 대응되는 값을 동일한 순서로 전달합니다.
```lua
function greet(name)
print("Hello, " .. name .. "!")
end
greet("Alice") -- 출력: Hello, Alice!
```
---
Q: 여러 개의 인자를 전달할 수 있나요?
A: 네, 쉼표로 구분해 여러 인자를 전달할 수 있습니다.
```lua
function add(a, b)
return a + b
end
print(add(3, 5)) -- 출력: 8
```
---
Q: 인자가 부족하거나 넘칠 때는 어떻게 되나요?
A:
- 부족할 경우 부족한 매개변수는 기본적으로 `nil`로 처리됩니다.
- 초과한 인자는 무시됩니다.
```lua
function show(a, b)
print(a, b)
end
show(1) -- 출력: 1 nil
show(1, 2, 3) -- 출력: 1 2 (3은 무시)
```
---
Q: 가변 인자(...)를 사용할 수 있나요?
```lua
function sum(...)
local s = 0
for _, v in ipairs{...} do
s = s + v
end
return s
end
print(sum(1, 2, 3, 4)) -- 출력: 10
```
---
Q: 함수 호출 시 괄호를 생략할 수도 있나요?
A: 인자가 하나이고 그 인자가 문자열 리터럴이나 테이블 리터럴일 경우 괄호를 생략할 수 있습니다.
```lua
function printMsg(msg)
print(msg)
end
printMsg "Hello" -- 괄호 생략 가능
printMsg {"a", "b"} -- 테이블도 가능
```
---
Q: 인자를 테이블 형태로 묶어 전달할 수 있나요?
A: 네, 여러 인자를 테이블로 묶어 한 번에 전달할 수 있으며, 함수에서 테이블로 받으면 됩니다.
```lua
function printPerson(person)
print(person.name, person.age)
end
printPerson({name = "Bob", age = 30})
```
---
요약:
- 함수 매개변수는 괄호 내에 쉼표로 구분하여 여러 개 지정 가능
- 호출 시 인자도 동일한 순서로 전달
- 부족한 인자는 `nil`, 초과 인자는 무시
- 가변 인자(...) 지원
- 특정 조건에서 괄호 생략 가능
- 테이블로 묶어 인자 전달 가능
이렇게 간단하고 유연하게 인자를 전달할 수 있습니다.
루아는 동적 타이핑(dynamic typing) 언어로, 함수의 인자는 다양한 데이터 타입을 가질 수 있습니다.
여기서는 루아에서 함수의 인자를 정의하고 전달하는 방법에 대해 자세히 설명하겠습니다.
1. 함수 정의 루아에서 함수를 정의할 때는 `function` 키워드를 사용합니다.
함수는 여러 개의 인자를 받을 수 있으며, 인자는 괄호 안에 나열됩니다.
기본적인 함수 정의의 예는 다음과 같습니다: ```lua function greet(name) print("Hello, " .. name .. "!") end ``` 위의 예에서 `greet` 함수는 하나의 인자 `name`을 받습니다.
이 인자는 함수 내부에서 사용되어 인사 메시지를 출력하는 데 사용됩니다.
2. 함수 호출 정의된 함수를 호출할 때는 함수 이름 뒤에 괄호를 붙이고, 그 안에 인자를 전달합니다.
예를 들어: ```lua greet("Alice") -- 출력: Hello, Alice! greet("Bob") -- 출력: Hello, Bob! ``` 여기서 `"Alice"`와 `"Bob"`은 각각 `greet` 함수의 인자로 전달됩니다.
3. 여러 인자 전달 루아에서는 함수가 여러 개의 인자를 받을 수 있습니다.
인자는 쉼표로 구분하여 나열할 수 있습니다.
예를 들어: ```lua function add(a, b) return a + b end local sum = add(5,
3) -- sum은 8이 됩니다.
print(sum) -- 출력: 8 ``` 위의 `add` 함수는 두 개의 인자 `a`와 `b`를 받아서 그 합을 반환합니다.
4. 가변 인자 함수 루아에서는 가변 인자 함수도 지원합니다.
즉, 함수가 받을 인자의 개수를 미리 정해놓지 않고, 호출 시에 원하는 만큼의 인자를 전달할 수 있습니다.
이를 위해 `...` (세 개의 점)을 사용합니다.
```lua function printNumbers(...) for _, number in ipairs({...}) do print(number) end end printNumbers(1, 2, 3, 4,
5) -- 출력: 1, 2, 3, 4, 5 ``` 위의 `printNumbers` 함수는 가변 인자를 받아서 각 숫자를 출력합니다.
5. 기본값 설정 루아에서는 함수 인자에 기본값을 설정할 수는 없지만, 함수 내부에서 조건문을 사용하여 기본값을 설정할 수 있습니다.
예를 들어: ```lua function greet(name) name = name or "Guest" -- name이 nil일 경우 "Guest"로 설정 print("Hello, " .. name .. "!") end greet() -- 출력: Hello, Guest! greet("Alice") -- 출력: Hello, Alice! ``` 위의 예에서 `name`이 제공되지 않으면 기본값으로 `"Guest"`가 사용됩니다.
6. 테이블을 통한 인자 전달 루아에서는 테이블을 사용하여 여러 인자를 그룹화하여 전달할 수 있습니다.
이는 특히 많은 인자를 전달해야 할 때 유용합니다.
```lua function displayInfo(info) print("Name: " .. info.name) print("Age: " .. info.age) end local person = {name = "Alice", age = 30} displayInfo(person) ``` 위의 예에서 `displayInfo` 함수는 하나의 테이블 인자를 받아서 그 안의 정보를 출력합니다.
결론 루아에서 함수의 인자를 전달하는 방법은 매우 유연하고 강력합니다.
기본적인 인자 전달부터 가변 인자, 테이블을 통한 인자 전달까지 다양한 방법을 통해 함수의 동작을 확장할 수 있습니다.
이러한 특성 덕분에 루아는 다양한 프로그래밍 패러다임을 지원하며, 특히 게임 개발과 같은 분야에서 널리 사용됩니다.
작성자:
정우성 [비회원]
| 작성일자: 1년 전
2024-12-05 19:51:33
조회수: 149 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 149 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.