일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- receive_sharing_intent
- Flask
- extention
- 생명주기
- dart
- 개역개정
- python
- Share
- 워드파일
- zani
- 성경필사
- cache
- git설치
- 미색인
- ipykernel
- Device
- google search console
- vscdoe
- flutter
- Jupyter Notebook
- handlebars.js
- velocity_x
- inheritedWidget
- 소스제공
- widgetsBindingObserver
- GIT
- Anaconda
- annotation
- dynamic color
- uni_links
- Today
- Total
자니노트
Dart extension 설명 및 사용법 - 클래스에 새로운 기능을 추가 본문
"extension"은 Dart 2.7부터 도입된 기능으로, 기존 클래스에 새로운 기능을 추가할 수 있게 해줍니다.
이는 기존 클래스를 확장하여 추가적인 메서드나 속성을 제공하고자 할 때 유용합니다.
이러한 확장은 원본 클래스를 수정하지 않고도 그 위에 새로운 기능을 덧붙일 수 있게 해줍니다.
예를 들어, List 클래스에 printElements라는 새로운 메서드를 추가하려면 다음과 같이 할 수 있습니다:
extension PrintElements<T> on List<T> {
void printElements() {
for (var item in this) {
print(item);
}
}
}
void main() {
var list = [1, 2, 3, 4, 5];
list.printElements(); // 1, 2, 3, 4, 5를 각각 출력합니다.
}
이 예제에서 PrintElements extension은 List 클래스에 적용되며, 그 결과로 List 객체는 printElements 메서드를 사용할 수 있게 됩니다.
Dart의 "extension" 기능은 기존 클래스를 변경하지 않고도 클래스에 추가적인 기능을 제공하고자 할 때 매우 유용합니다.
아래는 extension에 대한 몇 가지 주요 점입니다:
기존 클래스 수정 없이 기능 추가:
extension을 사용하면, 기존에 정의된 클래스나 라이브러리에 새로운 메서드나 속성을 추가할 수 있습니다.
이렇게 확장된 기능은 해당 클래스의 인스턴스에서 사용할 수 있습니다.
타입 매개변수 지원:
위의 예제에서 볼 수 있듯이, extension은 제네릭을 지원합니다. 이를 통해 다양한 타입에 대해 동일한 확장 기능을 제공할 수 있습니다.
명시적 이름:
extension에는 선택적으로 이름을 부여할 수 있습니다. 이 이름은 주로 코드 내에서 확장을 참조할 때 유용합니다.
그러나 대부분의 경우, 이름 없이 extension을 정의하고 사용할 수 있습니다.
제한된 확장:
extension은 특정 타입에만 적용됩니다. 예를 들어, List<int>에만 특정 확장 기능을 제공하려면 해당 타입에만 extension을 적용할 수 있습니다.
예제로 다시 한번 살펴보겠습니다:
extension IntParsing on String {
int parseInt() {
return int.parse(this);
}
}
void main() {
String numberString = "12345";
int number = numberString.parseInt();
print(number); // 12345 출력
}
위의 예제에서는 String 클래스에 parseInt라는 새로운 메서드를 추가합니다. 이 메서드는 문자열을 정수로 변환합니다. extension을 사용하면 String 클래스를 직접 수정하지 않고도 이러한 추가 기능을 제공할 수 있습니다.
요약하면, Dart의 extension은 기존의 코드나 라이브러리를 수정하지 않고도 추가적인 기능을 제공할 수 있게 해주는 강력한 도구입니다.
'모바일 개발 > Dart&Flutter' 카테고리의 다른 글
[Flutter] 앱에 공유된 DATA 정보 받기 - uni_links, receive_sharing_intent (0) | 2023.09.12 |
---|---|
Flutter Hive 설명 및 사용방법 - App에서 Data 저장할 수 있는 기능 (0) | 2023.08.24 |
flutter WidgetsBindingObserver 설명 및 사용법 - 앱 생명주기 이벤트 처리 (0) | 2023.08.22 |
Flutter velocity_x 설명 및 사용법 (0) | 2023.08.22 |
Flutter InheritedWidget 라이브러리 설명 및 사용 방법 (0) | 2023.08.22 |