티스토리 뷰
반응형
📌 Dart의 함수 (Function) 문법 완벽 정리 - 정의부터 반환값까지!
Dart에서 함수(Function)는 코드의 재사용성을 높이고, 가독성을 개선하는 중요한 요소입니다.
이번 글에서는 Dart의 함수 정의 방법, 매개변수 활용, 반환값 처리 및 다양한 함수 스타일을 자세히 다룹니다.
🔹 1. 함수 정의 및 기본 문법
Dart에서 함수를 정의하는 기본 문법은 다음과 같습니다.
1️⃣ 기본적인 함수 선언과 호출
void sayHello() {
print("안녕하세요!");
}
void main() {
sayHello(); // 함수 호출
}
출력:
안녕하세요!
- void는 반환값이 없는 함수를 의미합니다.
- 함수는 반드시 main()에서 호출해야 실행됩니다.
2️⃣ 반환값이 있는 함수 (return 사용)
int add(int a, int b) {
return a + b;
}
void main() {
int result = add(5, 3);
print(result); // 8
}
출력:
8
- return을 사용하여 값을 반환합니다.
- 반환 타입(int, String 등)을 명시하는 것이 권장됩니다.
✅ 팁
- void는 반환값이 없을 때 사용합니다.
- 함수의 반환 타입을 명확하게 지정하면 코드 안정성이 높아집니다.
🔹 2. 매개변수 (Parameters)
Dart에서는 다양한 방법으로 매개변수를 전달할 수 있습니다.
🔸 1. 기본 매개변수
void greet(String name) {
print("안녕하세요, $name!");
}
void main() {
greet("철수"); // 안녕하세요, 철수!
}
- 함수의 매개변수를 지정하고, 값을 전달할 수 있습니다.
🔸 2. 선택적 매개변수 ([] 사용)
선택적 매개변수는 제공하지 않아도 되는 값입니다.
void greet(String name, [String? message]) {
if (message != null) {
print("$name: $message");
} else {
print("안녕하세요, $name!");
}
}
void main() {
greet("영희"); // 안녕하세요, 영희!
greet("철수", "반가워요!"); // 철수: 반가워요!
}
- [] 내부의 매개변수는 선택 사항입니다.
- null 가능성이 있으므로 String?을 사용해야 합니다.
🔸 3. 기본값을 가지는 매개변수 ({} + = 사용)
기본값을 설정하면 매개변수를 생략해도 됩니다.
void introduce(String name, {String role = "손님"}) {
print("이름: $name, 역할: $role");
}
void main() {
introduce("민수"); // 이름: 민수, 역할: 손님
introduce("지수", role: "개발자"); // 이름: 지수, 역할: 개발자
}
- {}를 사용하면 **이름 있는 매개변수(named parameter)**를 만들 수 있습니다.
- role = "손님"처럼 기본값을 설정할 수 있습니다.
✅ 팁
- 필수적인 매개변수는 일반 매개변수 (name) 사용
- 옵션이면 [] (선택적) 또는 {} (이름 있는 매개변수) 사용
- 기본값이 필요하면 {param = value} 형태로 설정
🔹 3. 화살표 함수 (=> 사용)
Dart에서는 짧은 함수 정의를 위해 **화살표 함수 (Arrow Function)**를 사용할 수 있습니다.
1️⃣ 기본 화살표 함수 (=> 사용)
int square(int x) => x * x;
void main() {
print(square(4)); // 16
}
출력:
16
- => (화살표) 오른쪽에 표현식을 사용하여 간결하게 정의할 수 있습니다.
2️⃣ return이 있는 경우도 가능
String greet(String name) => "안녕하세요, $name!";
void main() {
print(greet("하나")); // 안녕하세요, 하나!
}
- return이 필요한 경우에도 =>를 사용할 수 있습니다.
✅ 팁
- 간단한 함수는 =>를 사용하면 코드가 짧고 가독성이 좋아집니다.
- 로직이 복잡한 함수는 {}를 사용하여 명확하게 작성하는 것이 좋습니다.
🔹 4. 익명 함수 (Lambda)
익명 함수는 이름이 없는 함수로, 주로 List의 forEach() 같은 곳에서 사용됩니다.
void main() {
var numbers = [1, 2, 3];
numbers.forEach((num) {
print(num * 2);
});
}
출력:
2
4
6
- forEach()의 매개변수로 익명 함수를 전달하여 리스트의 요소를 변환할 수 있습니다.
🔹 5. 고차 함수 (Higher-Order Function)
Dart에서는 함수를 매개변수로 전달하거나 반환할 수 있습니다.
1️⃣ 함수를 매개변수로 전달
void performOperation(int a, int b, int Function(int, int) operation) {
print(operation(a, b));
}
void main() {
performOperation(5, 3, (x, y) => x + y); // 8
performOperation(5, 3, (x, y) => x * y); // 15
}
- 함수 operation을 매개변수로 받아 동적으로 계산할 수 있습니다.
2️⃣ 함수를 반환하는 함수
Function multiplyBy(int factor) {
return (int number) => number * factor;
}
void main() {
var triple = multiplyBy(3);
print(triple(4)); // 12
}
- multiplyBy(3)가 triple을 생성하고, triple(4)가 3 * 4 = 12를 계산합니다.
🛠 정리
개념 설명
기본 함수 | void functionName() {} |
반환값 있는 함수 | int add(int a, int b) { return a + b; } |
선택적 매개변수 | void greet(String name, [String? message]) |
이름 있는 매개변수 | void introduce(String name, {String role = "손님"}) |
화살표 함수 | int square(int x) => x * x; |
익명 함수 | numbers.forEach((num) { print(num * 2); }); |
고차 함수 | Function multiplyBy(int factor) { return (int number) => number * factor; } |
🔥 Dart 함수 활용 꿀팁
- 반환 타입을 명확히 지정하면 실수 방지 가능.
- 이름 있는 매개변수를 사용하면 가독성이 좋아짐.
- **화살표 함수 (=>)**를 사용하면 간단한 코드 작성 가능.
- 익명 함수를 활용하여 리스트 변환과 같은 기능을 간결하게 구현.
반응형
'[문법] 다트(Dart)' 카테고리의 다른 글
[고급] 5강. Dart의 비동기 처리 (async, await, Future) 완벽 정리 (0) | 2025.02.12 |
---|---|
[중급] 4강. Dart의 클래스 및 객체 지향 프로그래밍 (OOP) 개념과 문법 완벽 정리 (0) | 2025.02.12 |
[기초] 2강. Dart 조건문 & 반복문 완벽 가이드 - if, switch, for, while 총정리 (0) | 2025.02.12 |
[기초] 1강. Dart 변수 완벽 정리 - 리스트, 맵, Set까지 한 번에! (0) | 2025.02.12 |