Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- GPT-4's answer
- flutter
- 신재생에너지 발전설비 기사
- Java
- 자바
- 리눅스
- 인프라
- kotlin
- jpa
- DART
- spring data jpa
- Database
- write by chatGPT
- python
- 파이썬
- 데이터베이스
- oracle
- 유닉스
- NIO
- spring integration
- mobile programming
- 시스템
- flet
- write by GPT-4
- 자바네트워크
- 코틀린
- 역학
- 소프트웨어공학
- 고전역학
- chatGPT's answer
Archives
- Today
- Total
기억을 지배하는 기록
Dart 화살표 함수 본문
728x90
Dart에서 화살표 함수 (=>) 사용하기
Dart의 화살표 함수(Arrow Function) 는 단순한 함수 표현식을 간결하게 작성할 수 있도록 도와줍니다.
=> 기호를 사용하여 함수 본문을 한 줄로 줄일 수 있습니다.
1. 화살표 함수 기본 문법
1.1 기본 함수
일반적인 함수:
int add(int a, int b) {
return a + b;
}
화살표 함수로 변환:
int add(int a, int b) => a + b;
차이점:
- { return ... } 대신 =>를 사용하여 한 줄로 작성 가능
- 세미콜론(;)을 함수 본문 끝에 추가해야 함
결과는 동일
void main() {
print(add(3, 5)); // 8
}
2. 반환값이 없는 경우 (void)
화살표 함수는 void 함수에도 사용할 수 있습니다.
2.1 일반 함수
void sayHello() {
print("Hello, Dart!");
}
화살표 함수 변환
void sayHello() => print("Hello, Dart!");
출력
void main() {
sayHello(); // Hello, Dart!
}
3. 람다 함수(익명 함수)와 화살표 함수
익명 함수(람다 함수) 에도 화살표(=>)를 사용할 수 있습니다.
void main() {
var multiply = (int a, int b) => a * b;
print(multiply(4, 5)); // 20
}
- 익명 함수에서도 화살표 함수를 사용할 수 있음
4. 리스트와 함께 사용 (map, where, forEach)
화살표 함수는 리스트(List), 맵(Map)과 같은 컬렉션 메서드에서 자주 사용됩니다.
4.1 map() - 리스트 변환
void main() {
List<int> numbers = [1, 2, 3, 4, 5];
// 각 요소를 제곱한 리스트 반환
var squaredNumbers = numbers.map((num) => num * num).toList();
print(squaredNumbers); // [1, 4, 9, 16, 25]
}
- map()을 사용할 때 간결한 표현 가능
4.2 where() - 필터링
void main() {
List<int> numbers = [10, 15, 20, 25, 30];
// 짝수만 필터링
var evenNumbers = numbers.where((num) => num % 2 == 0).toList();
print(evenNumbers); // [10, 20, 30]
}
- where()을 사용하면 특정 조건을 만족하는 값만 추출 가능
4.3 forEach() - 리스트 반복
void main() {
List<String> fruits = ["Apple", "Banana", "Cherry"];
// 각 요소 출력
fruits.forEach((fruit) => print(fruit));
}
Apple
Banana
Cherry
5. reduce()와 fold() 사용
화살표 함수는 reduce()와 fold() 같은 리스트 연산에서도 유용합니다.
5.1 reduce() - 리스트 값 누적
void main() {
List<int> numbers = [1, 2, 3, 4, 5];
int sum = numbers.reduce((a, b) => a + b);
print(sum); // 15
}
- 리스트의 모든 요소를 더한 값을 반환
5.2 fold() - 초기값 포함 누적 연산
void main() {
List<int> numbers = [1, 2, 3, 4, 5];
int sumWithInitial = numbers.fold(10, (a, b) => a + b);
print(sumWithInitial); // 25
}
- fold(초기값, 연산식)을 사용하면 초기값 포함 연산 가능
6. 클래스에서 화살표 함수 사용
6.1 클래스 내부에서 사용
class Rectangle {
int width, height;
Rectangle(this.width, this.height);
// 화살표 함수로 면적 계산
int get area => width * height;
}
void main() {
Rectangle rect = Rectangle(10, 5);
print(rect.area); // 50
}
- Getter를 화살표 함수로 간결하게 표현 가능
6.2 toString() 메서드 간결하게 작성
class Person {
String name;
int age;
Person(this.name, this.age);
@override
String toString() => "이름: $name, 나이: $age";
}
void main() {
Person p = Person("Alice", 30);
print(p); // 이름: Alice, 나이: 30
}
- toString() 메서드를 간결하게 작성 가능
7. 조건문과 화살표 함수
화살표 함수에서도 삼항 연산자(? :)를 사용할 수 있습니다.
String checkEvenOrOdd(int number) => number % 2 == 0 ? "짝수" : "홀수";
void main() {
print(checkEvenOrOdd(10)); // 짝수
print(checkEvenOrOdd(7)); // 홀수
}
- 간단한 조건문을 포함하는 함수 작성 가능
8. 화살표 함수 사용 시 주의할 점
=>는 한 줄짜리 표현식에서만 사용 가능
int add(int a, int b) => a + b; // 가능
int subtract(int a, int b) {
return a - b; // 가능 (일반 함수)
}
int multiply(int a, int b) => { // 오류 발생
return a * b;
};
- {} 블록이 필요한 경우 화살표 함수를 사용할 수 없음
여러 줄 코드가 필요한 경우 일반 함수 사용
void printNumbers(int max) {
for (int i = 0; i < max; i++) {
print(i);
}
}
// void printNumbers(int max) => for (int i = 0; i < max; i++) print(i); 오류 발생
- 여러 줄이 필요한 경우 일반 {} 블록을 사용하는 것이 적절함
화살표 함수 정리
사용 사례 | 예제 |
기본 함수 변환 | int add(int a, int b) => a + b; |
void 함수 | void sayHello() => print("Hello!"); |
리스트 변환 (map) | numbers.map((num) => num * num).toList(); |
리스트 필터링 (where) | numbers.where((num) => num % 2 == 0).toList(); |
리스트 반복 (forEach) | fruits.forEach((fruit) => print(fruit)); |
누적 연산 (reduce, fold) | numbers.reduce((a, b) => a + b); |
클래스 메서드 | String toString() => "이름: $name, 나이: $age"; |
728x90
'Flutter for Beginners' 카테고리의 다른 글
Dart 객체지향 프로그래밍 - 상속(Inheritance) (0) | 2025.02.24 |
---|---|
Dart 객체지향 프로그래밍 - 클래스와 객체 (0) | 2025.02.24 |
Dart의 예외 처리 (0) | 2025.02.21 |
Dart의 함수(Function)와 람다(Lambda) (0) | 2025.02.21 |
Dart의 제어문 (0) | 2025.02.20 |
Comments