프로그래밍에서 함수는 작업을 캡슐화하고 재사용할 수 있도록 도와주는 중요한 도구입니다.
Dart에서는 익명 함수와 화살표 함수(람다 표현식)를 사용하여 더 간결하고 유연한 코드를 작성할 수 있습니다. 이번 글에서는 익명 함수와 화살표 함수의 개념과 활용 예제를 알아보겠습니다.
1. 익명함수 (Anonymous Function)
익명 함수는 이름이 없는 함수로, 특정 작업을 수행하기 위해 임시로 정의되는 함수입니다. Dart에서 익명 함수는 변수에 할당하거나, 다른 함수의 인자로 넘길 때 유용하게 사용됩니다. 아래에 익명 함수의 문법 모양을 보여드릴게요.
(매개변수){
// 수행 구문
}
💻 실습하기
// 익명 함수
void main() {
// 1단계 - 이름이 없는 함수(선언을 하더라도 외부에서 사용할 방법이 없다.)
//변수에 할당하지 않고 바로 익명함수를 호출하는 것은 dart에서 불가능
(int number) {
return 100 + number;
};
// 2단계 - 함수를 변수에 담을 수 있다
// 다트에서 함수의 타입 Function
Function(int) square = (int number) {
return number * number;
};
// 3단계
var sub = (int number1, int number2) {
return number1 - number2;
};
// 4단계 - dart에서는 매개변수 데이터 타입도 생략이 가능하다
var add = (number1, number2) {
return number1 + number2;
};
//두 수의 곱하기 익명 함수를 정의하고 그 함수를 변수에 담는 식을 완성하세요
var multi = (num1, num2) {
return num1 * num2;
};
print('3의 제곱은 ::: ${square(3)}');
print('10에서 5를 빼면 ::: ${sub(10, 5)}');
print('두 수를 더하면 ::: ${add(3, 55)}');
print('두 수를 곱하는 함수 ::: ${multi(5, 9)}');
} //end of main
💡 응용 코드를 만들어 익명함수의 문법에 익숙해집시다!
import 'dart:math';
void main() {
//응용코드 만들어보기 - 익명함수
var afterToday = (days) {
var today = DateTime.now();
return today.add(Duration(days: days));
};
var pi = (half) {
return half * half * 3.14;
};
var StrLength = (String str) {
return str.length;
};
var filter = (List<int> nums, int divNum) {
return nums.where((num) => num ~/ divNum == 0).toList();
};
var gcd = (int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
};
print('오늘로부터 3일 후 ${afterToday(3)}');
print('원의 넓이 구하기 ${pi(3.555)}');
print('문자열의 길이 구하기 ${StrLength('hello dart!')}');
print('리스트 필터링 ${filter([2, 5, 7, 22, 56, 127, 9], 3)}');
print('두 수의 최대공약수 ${gcd(16, 48)}');
}
2. 화살표 함수(Arrow Function)
Dart에서는 화살표 함수를 사용해 함수를 더 간결하게 작성할 수 있습니다. 다른 프로그래밍 언어에서는 람다 함수 또는 람다 표현식이라 부릅니다. 화살표 함수는 한 줄로 작성 가능한 함수를 정의할 때 유용합니다.
화살표 함수의 문법을 살펴볼까요?
// 일반적인 함수 정의
int add(int a, int b) { // 함수의 선언부
return a + b; // 함수의 구현부
}
// 화살표 함수로 변환
int addArrow(int a, int b) => a + b;
💻 실습하기
// 화살표 함수 (람다 표현식)
void main() {
int num1 = 500;
int num2 = 10;
print('더하기 ::: ${add(num1, num2)}');
print('더하기2 ::: ${add2(num1, num2)}');
print('빼기 ::: ${sub(num1, num2)}');
print('곱하기 ::: ${mul(num1, num2)}');
print('나누기 ::: ${div(num1, num2)}');
}
// 재활용 하고 싶다면 --> 함수 --> 좀 더 간결 --> 화살표 함수
int add(int n1, int n2) {
return n1 + n2;
}
int add2(int n1, int n2) => n1 + n2;
int sub(int n1, int n2) => n1 - n2;
int mul(n1, n2) => n1 * n2;
double div(n1, n2) => n1 / n2;
📚 익명함수와 화살표함수의 특징
특징 | 익명함수 | 화살표함수 |
문법 | var f = (int x) { return x + 1; }; | var f = (x) => x + 1; |
반환 | return 키워드 사용 | 자동반환 |
코드길이 | 상대적으로 길다 | 더 간결함 |
활용 | 복잡한 로직 | 단순 계산, 표현식 |
익명 함수와 화살표 함수는 Dart에서 함수형 프로그래밍 스타일을 가능하게 하는 중요한 요소입니다.
1. 익명 함수는 복잡한 로직을 간단하게 캡슐화하고, 즉시 사용할 수 있는 유연성을 제공합니다.
2. 화살표 함수는 한 줄로 작성 가능한 간단한 함수를 표현하기에 적합합니다.
이 두 가지를 적절히 활용하면, 더 간결하고 읽기 쉬운 코드를 작성할 수 있습니다.
❔ Dart의 기본 연산자에 대해서 궁금하다면?
[DART] 기본 연산자
1. 산술 연산자 (Arithmetic Operators)Dart에서 산술 연산자는 숫자 값을 계산할 때 사용합니다. 기본적인 덧셈, 뺄셈, 곱셈, 나눗셈 외에도 Dart만의 독특한 나머지 연산자와 정수 나눗셈 연산자가 있습
dev-yeonwha.tistory.com
아래의 문헌을 참고하여 작성된 포스팅입니다.
최주호, 김근호, 이지원(공저) 『 만들면서 배우는 플러터 앱 프로그래밍』, 앤써북, 2023.
'Flutter > Dart' 카테고리의 다른 글
[DART] 상속(Inheritance)이란 무엇인가요? (0) | 2025.01.06 |
---|---|
[DART] Sound Null Safety in dart (0) | 2025.01.06 |
[DART] 클래스와 인스턴스 (2) | 2025.01.03 |
[DART] 기본 연산자 (0) | 2025.01.03 |
[DART] Dart 기본 문법 익히기 (0) | 2025.01.03 |