강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

Jaehyeon Lee님의 프로필 이미지
Jaehyeon Lee

작성한 질문수

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

equals와 ==의 차이

작성

·

277

0

tbl.date.equals(date)

대신

tbl.date == date

로 비교하면

The return type 'bool' isn't a 'Expression<bool?>', as required by the closure's context. 

라는 에러가 나던데 정확한 의미가 궁금합니다.

답변 1

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요.

'=='은 Dart 언어에서 제공해주는 비교 오퍼레이터입니다.

말씀하시는 .equals는 Moor에서 제공해주는 API입니다.

이 둘은 매우 다른 근본적인 차이점이 있는데 일단 Moor는 Dart 언어로 실행되지 않는다는 점입니다.

Moor 자체는 Dart  언어지만 Moor로 작성된 쿼리는 SQL로 "변환돼서" SQLite에서 실행됩니다.

그러니 SQL 컨텍스트에서 '=='은 아무런 의미가 없습니다. 그대로 변환을 한다해도 실제로 '='를 두개 사용하는 문법은 존재하지 않습니다.

하지만 .equals를 사용하면 실제 SQLite에서 사용하는, 저희가 Dart 언어에서 '=='로 사용하는 방식에 해당되는 값으로 "전환"이 됩니다.

그렇기때문에 꼭 equals 메소드를 사용하셔서 쿼리를 작성하셔야합니다.

Jaehyeon Lee님의 프로필 이미지
Jaehyeon Lee

작성한 질문수

질문하기