🚀 Dart 함수(Function) 고급 활용법 완전 정복
1️⃣ 함수 정의 및 호출 (기본)
Dart 함수 기본 형태:
반환타입 함수이름(매개변수) {
// 실행 코드
return 결과;
}
✅ 예시:
int add(int a, int b) {
return a + b;
}
void main() {
print(add(3, 5)); // 출력: 8
}
2️⃣ 선택적 매개변수 (Optional Parameters)
매개변수를 필요할 때만 넣고 싶을 때 사용합니다.
String greet(String name, [String? message]) {
return 'Hello, $name! ${message ?? ''}';
}
void main() {
print(greet('Hsg')); // Hello, Hsg!
print(greet('Hsg', 'Good Day!')); // Hello, Hsg! Good Day!
}
-
대괄호 [] 안에 넣으면 선택적 매개변수!
-
값이 없으면 null 이 되므로 ??로 기본 처리 가능.
3️⃣ 명명된 매개변수 (Named Parameters)
함수를 호출할 때 매개변수 이름을 지정해서 호출하는 방식.
가독성이 좋아지고 순서를 헷갈릴 일이 없습니다.
void introduce({required String name, int age = 0}) {
print('이름: $name, 나이: $age');
}
void main() {
introduce(name: '지훈', age: 12);
introduce(name: '민지');
}
-
중괄호 {}로 감싸면 Named Parameter
-
required 키워드로 필수 지정
-
기본값 설정도 가능 (int age = 0)
4️⃣ 기본값 매개변수 (Default Values)
매개변수를 생략했을 때 자동으로 들어갈 값을 설정할 수 있어요.
void sayHello(String name, [String message = '반가워요!']) {
print('안녕하세요, $name! $message');
}
void main() {
sayHello('지훈'); // 안녕하세요, 지훈! 반가워요!
sayHello('지훈', '좋은 하루!'); // 안녕하세요, 지훈! 좋은 하루!
}
-
선택적 매개변수 + 기본값 설정 가능
-
Named Parameter에도 기본값 사용 가능
5️⃣ 화살표 함수 (Arrow Functions)
함수가 한 줄이면 화살표(=>) 로 더 간결하게 작성할 수 있어요.
int square(int x) => x * x;
void main() {
print(square(4)); // 출력: 16
}
-
return 생략 가능
-
간단한 계산 함수에 자주 사용됨
6️⃣ 익명 함수 (Anonymous Functions)
이름이 없는 함수. 주로 콜백 함수나 리스트 처리 시 사용합니다.
void main() {
List<String> fruits = ['사과', '바나나', '포도'];
fruits.forEach((fruit) {
print('내가 좋아하는 과일: $fruit');
});
}
-
forEach, map, where 같은 함수형 프로그래밍에서 많이 사용
-
코드를 간결하게 만듭니다.
7️⃣ 고차 함수 (Higher-Order Functions)
함수를 인자로 전달하거나, 함수에서 함수를 반환하는 고급 개념.
✅ 예시: 함수를 인자로 전달하기
void calculate(int a, int b, int Function(int, int) operation) {
print('결과: ${operation(a, b)}');
}
int add(int x, int y) => x + y;
void main() {
calculate(3, 4, add); // 결과: 7
}
-
int Function(int, int) → 함수 타입 지정
-
전략 패턴처럼 다양한 동작을 넣을 수 있음
✅ 예시: 함수를 반환하는 함수
Function multiplier(int n) {
return (int x) => x * n;
}
void main() {
var doubleIt = multiplier(2);
print(doubleIt(5)); // 출력: 10
}
-
클로저(Closure) 개념도 포함
-
함수 안에서 외부 변수를 기억하는 함수 생성 가능
💡 Dart 함수 고급 활용의 장점
-
코드 재사용성 극대화
-
깔끔하고 유지보수 쉬운 코드
-
Flutter에서 UI 이벤트 처리, 콜백, 상태 관리에 필수
-
함수형 프로그래밍 스타일 적용 가능
🎯 실전 예시: Flutter에서 함수 고급 활용
ElevatedButton(
onPressed: () => print('버튼이 눌렸어요!'),
child: Text('클릭'),
);
-
익명 함수 + 화살표 함수로 UI 이벤트 처리!
📚 정리
개념 |
설명 |
---|---|
선택적 매개변수 |
매개변수를 넣어도 되고 안 넣어도 됨 |
명명된 매개변수 |
이름을 지정해서 호출 |
기본값 매개변수 |
값을 안 넣으면 자동으로 기본값 설정 |
화살표 함수 |
한 줄 함수 축약형 |
익명 함수 |
이름 없는 함수, 콜백에 주로 사용 |
고차 함수 |
함수를 인자로 전달하거나 반환 |
댓글 쓰기