* 제네릭
: 클래스, 함수의 정의를 선언할 때가 아니라 '인스턴스화' 하거나 '실행'할 때로 미룬다.
특정 변수의 타입을 하나의 타입으로 제한하고 싶지 않을 때 자주 사용!
ex) List<String> → String 값으로 구성된 리스트를 생성하겠다!
// 인스턴스화 할 때 입력받을 타입 : <T>
class Cache<T> {
// data 타입 : 추후에 입력될 T 타입으로 지정
final T data;
Cache({
required this.data,
});
}
void main(){
// T의 타입 → List<int> 로 지정!!! ⭐⭐⭐
final cache = Cache<List<int>>(
data: [1,2,3],
);
print(cache.data.reduce((value, element) => value + element));
}
* 많이 사용되는 제네릭 문자
문자 | 설명 |
T | 변수 타입 표현할 때 흔히 사용 ex) T value |
E | 리스트 내부 요소들의 타입을 표현할 때 흔히 사용 ex) List<E> |
K | 키를 표현할 때 흔히 사용 ex) Map<K, V> |
V | 값을 표현할 때 흔히 사용 ex) Map<K, V> |
* 스태틱 (static)
: 변수, 메서드 등 모든 속성 → '클래스의 인스턴스' 에 귀속된다!
But static 키워드 사용시 → '클래스 자체' 에 귀속된다.
class Counter{
// static 변수 선언
static int i = 0;
Counter(){
i++;
print(i++);
}
}
void main(){
Counter count1 = Counter();
Counter count2 = Counter();
Counter count3 = Counter();
}
static 변수 i → Counter 클래스에 귀속되기 때문에, 인스턴스 호출시 1씩 증가
클래스에 직접 귀속되기 때문에, 생성자에서 static 값 지정하지 못함!
→ 인스턴스끼리 공유해야하는 정보에 static 지정한다.
* 캐스케이드 연산자
: 인스턴스에서 해당 인스턴스의 속성, 멤버 함수를 연속해서 사용하는 기능
→ 더욱 간결한 코드를 사용할 수 있다.
'..' 기호 사용
void main(){
// cascade operator : ..
// 선언한 변수 메서드를 연속으로 실행 가능!
Idol blackpink = Idol('블랙핑크', 4)
..sayName()
..sayMembersCount();
}
'Flutter' 카테고리의 다른 글
[Flutter] 콜백함수와 웹뷰 위젯, 웹뷰 컨트롤러 (0) | 2023.06.09 |
---|---|
[Flutter] 위젯(Widget) 소개 (0) | 2023.06.08 |
[Flutter] 플러터 객체지향 프로그래밍 - (3) 믹스인과 추상 (0) | 2023.06.08 |
[Flutter] 플러터 객체지향 프로그래밍 - (2) 상속 및 오버라이드, 인터페이스 (0) | 2023.06.08 |
[Flutter] 플러터 객체지향 프로그래밍 - (1) 클래스 (0) | 2023.06.07 |
댓글