본문 바로가기
공부내용

다트문법_List<int> a = [0,0]; a == [0,0]; → false??

by 골목코딩 2024. 11. 13.

코딩 테스트 중

아래와 같이 코딩했는데 의도한 답이 나오지 않았다.

 

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를 사용하라고 함.

 

댓글