메소드의 확장 Extension 기존 선언한 클래스나 구조체에 메소드를 더 추가하여 기능을 확장하고자 할 때가 있다. 이럴 때 클래스나 구조체를 선언한 파일 위치를 찾아 선언부에 메소드를 추가할 수 있다. 하지만 언제나 선언부에 메소드를 추가하는 것이 답이 아닐 수도 있다. 언제나 선언부에 메소드를 추가하게 되면, 다른 사람이 선언한 것도 겹쳐 충돌이 날 수도 있고, 매번 클래스나 구조체 선언부를 찾는 게 어려울 수도 있기 때문이다. 이럴 땐 extension을 활요하면 된다. struct Math { static func abs(value: Int) -> Int { if value > 0 { return value } else { return -value } } } Math.abs(value: -20)..
Structure 예제 편의점에 대한 구조체를 만들어보자! 다음 코드는 현재 내 위치에서 가장 가까운 편의점을 찾는 코드이다. 먼저 편의점의 위치와 이름을 관리하는 구조체를 생성해보자. Location structure는 위치 좌표에 대한 것이고, Store structure는 편의점의 위치와 이름에 대한 것이다. 이때 Object는 structure로 구현될 수 있다는 것을 기억해본다면, 구조체 안에는 데이터 뿐만 아니라 메소드도 들어갈 수 있다는 걸 알 수 있다. struct Location { let x: Int let y: Int } struct Store { let loc: Location let name: String let deliveryRange = 2.0 func isDeliverable..
Structure 구조체는 서로 관계 있는 속성들을 묶어서 표현하는 오브젝트이다. (Object = Data + Method) Object는 Structure와 Class 둘 중 하나의 방법으로 구현된다. Structure와 Class의 차이 Structure(구조체) Class Value Type Reference Type Copy Shared Stack Heap 우선 Structure는 Value type이다. 구조체 타입의 변수에는 말 그대로 해당 구조체의 value가 저장된다. 반면에 Class는 reference type으로 class 타입의 변수에는 값이 저장된 메모리에 대한 참조가 저장된다. 따라서 해당 클래스 변수를 참조하게 되면 변수가 참조하고 있는 메모리에 가서 얻고자 하는 값을 가져온..