Equatable이란?(swift)~object끼리 비교해보자~
1. Equatable이란?
Equal(=)은
Equatable을 같게 하는 것은 비교할 수 있다는 뜻이다.
지금까지 비교할 수 없었던 Object 사이를 비교할 수 있다는 얘기다.대충 정리해보면 직접 만든 맞춤형 학급 등이다.
2. Equatable의 예가 아니다
길잡이반을 만들어 봤어요.변수는 하나뿐입니다.
Teacher.swift
class Teacher{
var name:String
init(name: String) {
self.name = name
}
}
나는 네 명의 선생님을 만들어 그에게 이름을 지어 주었다.var teachers:[Teacher] = []
var one = Teacher(name:"AJ")
var two = Teacher(name: "Bob")
var three = Teacher(name: "Amy")
var four = Teacher(name: "John")
teachers.append(one)
teachers.append(two)
teachers.append(three)
teachers.append(four)
name 사이 비교 가능!(String 비교 중)if one.name == two.name{
print("match!")
}
근데 반을 비교하면 오류가 발생합니다!if one == two{
print("same!")
}
if teachers[0] == teachers[1]{
}
다른 건 Aray도 있고.index (of:) 를 사용할 수 없습니다!(이것이 가장 곤란하다.)
teachers의 배열은 Teacher로 구성되어 있기 때문에 비교할 수 없습니다.
if let index = teachers.index(of: teachers.name){
}
3. Equatable 시도
class Teacher:Equatable{
var name:String
init(name: String) {
self.name = name
}
func ==(lhs: Teacher, rhs: Teacher) -> Bool{
return lhs.name == rhs.name
}
}
비교 방법에서lhs는 왼쪽의object를,rhs는 오른쪽의object를 나타낸다.비교 판정 방법의 명칭.비교해 보면 틀리지 않을 거야!
print(one == two)
//false
※ 같은 이름이 아니어서 가짜로 돌아왔습니다.3. 여러 변수로 Equatable 진행
Teacher.swift
class Teacher: Equatable{
var name:String
var age:Int
init(name: String, age:Int) {
self.name = name
self.age = age
}
static func ==(lhs: Teacher, rhs: Teacher) -> Bool{
return lhs.name == rhs.name && lhs.age == rhs.age
}
}
이렇게 하면name과age가 같은지 비교할 수 있습니다.코드 여기 있어요!
https://github.com/Saayaman/swift/tree/master/Practices/Equatable
참조:
http://nshipster.com/swift-comparison-protocols/
Reference
이 문제에 관하여(Equatable이란?(swift)~object끼리 비교해보자~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Saayaman/items/e0ca9d22daef50e549dc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)