Flutter/Dart 문법
[Dart] Generic
Chafle
2023. 3. 22. 16:12
반응형
Generic은 타입을 외부에서 받을 때 사용한다.
class Lecture {
final int id;
final String name;
Lecture(this.id, this name);
}
이런 Class가 있다고 보면,
Lecture은 class외부에서 생성자를 input으로 받게 되는데
타입은 사실 받기 어렵다. 이미 class내부에서 정의내렸기 때문이다.
void main() {
Lecture<String> lecture1 = Lecture('123','lecture1'); // String이니까 잘 들어간다
}
class Lecture<T> { // <>사이에 무엇을 넣어도 상관없는데 보통T넣는다.
final T id;
final String name;
Lecture(this.id, this.name);
}
class 외부에서 타입을 지정하고 싶으니까 <T>을 붙여줬고
인스턴스에도 타입을 T로 바꿔 놓으면
Lecture<Type>에 따라서 input에 Type에 맞는 값을 위 코드처럼 적당하게 넣어 줄 수있다.
runtimeType으로 타입을 확인해보면
내가 설정한 타입으로 잘 설정된지 확인 할 수 있다.
void main() {
Lecture<String> lecture1 = Lecture('123','lecture1');
lecture1.printIdType();
Lecture<int> lecture2 = Lecture(123, 'lecture2');
lecture2.printIdType();
}
class Lecture<T> { // <>사이에 무엇을 넣어도 상관없는데 보통T넣는다.
final T id;
final String name;
Lecture(this.id, this.name);
void printIdType() {
print(id.runtimeType);
}
}
타입 여러개를 받고 싶은 경우
void main() {
Lecture<String, String> lecture1 = Lecture('123','lecture1');
lecture1.printIdType();
Lecture<int, String> lecture2 = Lecture(123, 'lecture2');
lecture2.printIdType();
}
class Lecture<T,X> { // <>사이에 무엇을 넣어도 상관없는데 보통T넣는다.
final T id;
final X name;
Lecture(this.id, this.name);
void printIdType() {
print(id.runtimeType);
}
}
이렇게도 generic이 가능하다
반응형