게터와 세터 함수는 일반적으로 어떤 데이터를 가져오거나 변경하는 함수를 의미합니다. 다트 언어에서는 데이터를 가져올 함수에 get 예약어를 추가하고, 데이터를 변경할 함수에 set 예약어를 추가하면 함수를 변수처럼 이용할 수 있습니다.
다음 코드에서는 함수를 2개 선언했는데 일반 함수와 다르게 get과 set 예약어를 추가했습니다. get 예약어를 추가한 함수는 데이터를 가져오는 게터이므로 매개변수 부분을 선언할 수 없습니다. 반면에 set 예약어를 추가한 함수는 데이터를 변경하는 세터이므로 매개변수가 필요합니다. 이 매개변숫값으로 데이터를 변경합니다.
// 게터와 세터 선언
String _name = 'Hello';
String get name {
return _name.toUpperCase();
}
set name(value) {
_name = value;
}
중요한 것은 get과 set 예약어를 추가한 두 함수가 이름(예에서는 name)이 같다는 점입니다. 이렇게 get과 set 예약어로 함수를 선언하면 변수처럼 이용할 수 있습니다.
예에서 get과 set 예약어를 추가한 name은 변수가 아니라 함수입니다. 하지만 name은 다음처럼 변수로 이용할 수 있습니다. name에 데이터를 대입하면 자동으로 set 예약어로 선언한 함수가 호출되며, name의 데이터에 접근하면 자동으로 get 예약어로 선언한 함수가 호출됩니다.
// 게터와 세터 호출
main(List<String> args) {
name = "World";
print('name: $name');
}
▶ 실행 결과
name: WORLD
일반적으로는 게터와 세터를 모두 선언하지만 원한다면 둘 중 하나만 선언할 수도 있습니다. 만약 get 예약어로 게터만 선언한다면 final 변수처럼 데이터를 가져오기만 할 뿐 바꿀 수는 없습니다.
String _name = 'Hello';
String get name {
return _name.toUpperCase();
}
main(List<String> args) {
name = "World"; // 오류
}
'Flutter' 카테고리의 다른 글
실행 흐름 제어하기 (0) | 2024.11.13 |
---|---|
기타 연산자 알아보기 (0) | 2024.11.12 |
함수 타입 인수 (0) | 2024.11.12 |
옵셔널 위치 매개변수 (0) | 2024.11.12 |
명명된 매개변수 (0) | 2024.11.12 |