-
[Flutter] 연산자와 기호들IT 2025. 3. 26. 17:34
flutter를 사용하다보면 연산자들과 기호들을 맞이하게 되는데 이것이 무엇인지 몰라서 찾아봤습니다.
? Nullable Type Indicator (널러블 타입 표시)
플러터의 변수는 기본적으로 Non-Nullable로 선언됩니다. 즉 Null로 둘 수 없습니다.
그래서 Nullable변수로 만들기 위해서 자료형 뒤에 ? 를 붙이면 Null로 둘 수 있습니다.
! Null Assertion Operator (널 단언 연산자)
?와 같이 많이 사용되는 연산자입니다. ?를 이용하여 Null 값이 허용되어 있는 값을, 허용되지 않은 값에 넣으려고 하면 에러가 일어납니다.
이때 Null 값이 허용되지 않는 값 뒤에 !를 붙이면 에러가 발생하지 않습니다.
"!"를 써서 확실하게 Not-Nullable 변수에 Nullable 변수를 넣었을 때, 이 변수에 넣었을 경우에는 Nullable 변수는 100% null이 아니고 값이 있다 라고 알려줍니다. 이렇게 하면 컴파일 단계에서 null 체크 없이 코드를 실행합니다.
하지만, 이렇게 선언하고 나서 null 값이 들어가게 된다면 에러는 일어납니다.
이 상황은 무조건 개발자 탓입니다.
_ underbar, underscore
"_" 이 기호는 크게 두가지로 사용됩니다.
첫 번째, 함수 내에 무슨 값을 받을 목적으로 사용되는 자리에 _가 들어가 있다면 이 값은 받아도 사용하지 않는 값이다.
두 번째, parameter 앞에 _가 배치되어 있다면 (ex. _hello) 자바에서의 private을 의미 합니다.
즉, _ underscore로 선언한 변수에 접근하려면 해당 클래스 안의 메서드를 통해서만 가능하다 라는 것 입니다.
.. double dot, cascade operator
이것을 사용하면 객체를 계속해서 수정하거나 메서드를 호출하면서, 그 객체 자체를 반환할 수 있습니다.
즉, 여러 메서드를 체이닝해서 호출할 때 코드가 더 깔끔집니다.
예시로 리스트에 값을 넣을때, 일반적인 방식은 아래와 같은데,
void main() { List<int> numbers = []; // 일반적인 방식 numbers.add(1); numbers.add(2); numbers.add(3); print(numbers); // 출력: [1, 2, 3] }
.. 연산자를 사용하면
void main() { List<int> numbers = [] ..add(1) ..add(2) ..add(3); print(numbers); // 출력: [1, 2, 3] }
더 간결하고 직관적인 코드가 됩니다.
<> Generic
<>은 특정 데이터 타입을 일반화하여, 다양한 타입을 유연하게 사용할 수 있도록 하는 기능 입니다.
예시는 다음과 같습니다.
제네릭이 없는 코드 같은 경우에는 해당 List에 아무 타입이나 넣을 수 있어서 에기치 않은 오류가 발생할 가능성이 있습니다.
List numbers = [1, 2, 3]; // 어떤 타입이든 저장 가능 numbers.add("Hello"); // 문자열 추가 가능 (런타임 오류 발생 가능) int firstNumber = numbers[0]; // 타입이 명확하지 않음
이러한 문제를 해결하기 위해서 <>을 사용하여 List<int> 를 사용하여 리스트에 int 타입의 값만을 저장 가능하게 선언합니다.
이렇게 하면 컴파일 시점에 타입 검사가 가능하여, 잘못된 타입을 넣을 때 오류를 미리 잡아줘서 예기치 않은 오류를 방지할 수 있습니다.
List<int> numbers = [1, 2, 3]; // int 타입만 저장 가능 numbers.add(4); // ✅ 정상 동작 // numbers.add("Hello"); // ❌ 오류 발생 (int 타입만 허용) int firstNumber = numbers[0]; // ✅ 타입이 명확해서 안전함
'IT' 카테고리의 다른 글
앱 스토어 등록 시 인앱 결제는 필수적일까? (1) 2025.03.21 [Django] django와 django + ddd 의 차이 (0) 2025.03.21 [Flutter] WidgetsFlutterBinding.ensureInitialized(); 이란? (0) 2025.03.12 Nginx와 Gunicorn (0) 2025.03.06 [NAS] Docker Container 환경변수 파일로 전달하기. (0) 2025.02.27