[ Dart&Flutter ] Dart 함수(Function) 고급 활용법 완전 정복

🚀 Dart 함수(Function) 고급 활용법 완전 정복


Dart 함수(Function) 고급 활용법
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 이벤트 처리!






📚 정리

개념

설명

선택적 매개변수

매개변수를 넣어도 되고 안 넣어도 됨

명명된 매개변수

이름을 지정해서 호출

기본값 매개변수

값을 안 넣으면 자동으로 기본값 설정

화살표 함수

한 줄 함수 축약형

익명 함수

이름 없는 함수, 콜백에 주로 사용

고차 함수

함수를 인자로 전달하거나 반환


댓글 쓰기