LeetCode의 Linked List Cycle 문제를 풀다가
===를 ~=와 헷갈리는 바람에 gae고생을 하였다.
너무 크게 얻어 맞은 느낌이라 정리를 안 해도 까먹진 않을 것 같지만...
그래도 그냥 넘어가면 아쉬우니 정리를 해보려고 한다.
===와 ~= 모두 비교 연산자에 속한다.
=== 의 반대 격이라고 할 수 있는 !== 도 당연히 비교 연산자다.
초보 입장에서 값 비교를 할 일은 많아도
참조나 패턴 비교를 할 일은 비교적 적다 보니 이해도가 낮았던 것 같다.
class는 참조 타입의 대표격이라고 할 수 있다.
비교 연산을 실험해보기 위해 Book이라는 class를 생성했다.
class Book {
let title: String
let author: String
init(title: String, author: String) {
self.title = title
self.author = author
}
}
그리고 4개의 인스턴스를 생성해준 뒤, bookShelf에 3권을 담았다.
let book1 = Book(title: "Swift왕 김애플", author: "김애플")
let book2 = Book(title: "사과 농장 차리는 방법", author: "김애플")
let book3 = Book(title: "와장창 알고리즘", author: "와장창")
let book4 = Book(title: "와장창 자료구조", author: "와장창")
var bookShelf = [book1, book2, book3]