1. 개요
Dart 에는 Extension 문법이 존재한다.
어떠한 수정 불가능한 클래스에 대하여 메소드를 추가/수정 하고 싶을 경우 Extension 을 사용할 수 있다.
2. 사용
extension [extension 이름] on [타입] {}
와 같이 사용된다.
class A { void methodA() {} }
위 예시와 같이 클래스 A
는 methodA()
를 가지고 있다. 이때, methodB()
도 추가하고 싶지만, 클래스 A
를 수정할 수 없다면 Extension 을 사용 가능하다.
extension AExtension on A { void methodB() {} }
위와 같이 나타내면 다음과 같은 사용이 가능해진다.
A().methodB();
예시를 살펴보자.
3. 예시
Dart 에서는 기본적으로 숫자형 리스트 (Iterable<num>
)의 합 및 평균을 구해주는 메소드가 존재하지 않는다. 리스트의 합을 구하고 싶을 때, 다음과 같이 구현한다.
num sum = list.reduce((a, b) => a + b);
하지만, 이것은 직관적이지 못하다. 평균을 구할 경우에는 더욱 복잡해진다.
num avg = list.reduce((a, b) => a + b) / list.length;
이제 숫자형 리스트를 Extension 하여 직관적인 메소드를 추가해보자.
extension NumIterableExtension on Iterable<num> {
num get sum => reduce((a, b) => a + b);
num get average => sum / length;
}
이제 다음과 같은 사용이 가능하다.
void main() {
List<num> list = [1, 3, 5, 8, 9];
print(list.sum);
print(list.average);
}
출력결과
26
5.2
728x90
'Language Syntax > Dart' 카테고리의 다른 글
[Dart] 동기(Synchronous) / 비동기(Asynchronous) (0) | 2024.09.29 |
---|---|
[Dart] factory 예약어에 대한 고찰 (0) | 2024.01.09 |
[Dart] 널 세이프티 (Null Safety) (0) | 2023.11.07 |
[Dart] get / set (0) | 2023.10.31 |