코딩 테스트 중
아래와 같이 코딩했는데 의도한 답이 나오지 않았다.
List<int> a = [0,0];
print(a == [0,0]);
당연히 true인 줄 알았는데....false?????
챗gpt에게 설명을 요청해봄.
Dart에서 List의 비교는 참조(Reference) 비교를 기준으로 이루어지기 때문에 다음과 같은 코드에서 false가 나오는 것입니다.
이유
- List<int> a = [0, 0];는 새로운 리스트 객체를 만듭니다.
- [0, 0]은 또 다른 새로운 리스트 객체입니다.
- Dart에서 == 연산자는 두 리스트가 같은 메모리 주소를 참조하는지를 확인합니다.
- 즉, 두 리스트가 같은 객체인지 비교하는 것입니다.
- a와 [0, 0]은 서로 다른 객체이기 때문에 false를 반환합니다.
비교하고 싶다면
import 'package:collection/collection.dart'; //임포트가 필요하네요~~
List<int> a = [0, 0];
List<int> b = [0, 0];
print(a.equals(b)); true
equals를 사용하라고 함.
'공부내용' 카테고리의 다른 글
flutter_BuildContext context의 의미 (1) | 2024.11.15 |
---|---|
과제중 생각한 것들 (1) | 2024.11.14 |
dart문법_List.generate (0) | 2024.11.12 |
오늘 배운 이것 저것. Flutter 기초 (0) | 2024.11.11 |
프로젝트 진행하며 배운 몇 가지들..(문법) (0) | 2024.11.08 |
댓글