Swift

    Type Casting

    안녕하세요:) 오늘은 Type Casting을 통해 인스턴스의 형식을 확인하고 다른 형식으로 캐스팅하는 방법을 알아보도록 하겠습니다. 1. Type Casting 타입 캐스팅은 인스턴스 형식을 확인하거나 다른 형식으로 인스턴스를 처리할 때 사용됩니다. 다운 캐스팅에서도 사용됩니다. expr is Type 두 피연산자의 형식이 동일하면 true 왼쪽 피연산자의 형식이 오른쪽 피연산자의 형식과 동일한 상속 계층에 있고, 오른쪽 피연산자가 슈퍼클래스라면 true가 리턴됩니다. 나머지의 경우 false class Figure { let name: String init(name: String) { self.name = name } func draw() { print("draw \(n..

    Upcasting & Downcasting

    안녕하세요:) 오늘은 인스턴스를 동일한 클래스 계층에 존재하는 다른 클래스 형식으로 처리하는 방법에 대해서 알아보도록 하겠습니다. 1. Upcasting 동일한 클래스 계층에서 수행되는 Upcasting은 안전하고 항상 성공합니다. class Figure { let name: String init(name: String) { self.name = name } func draw() { print("draw \(name)") } } class Rectangle: Figure { var width = 0.0 var height = 0.0 override func draw() { super.draw() print("🍏 \(width) x \(height)") } } class Square: Rectangle {..

    Inheritance & Overriding

    안녕하세요:) 오늘은 클래스에서 상속을 통해 Super Class로부터 멤버를 상속하는 방법과 Super Class로부터 상속한 멤버를 재정의 하는 방법에 대해서 알아보도록 하겠습니다! 1. Inheritance(상속) 클래스 계층에서 가장 위를 Base Class 또는 Root Class라고 합니다. 상속 관계에서 가장 위에 있는 클래스는 Super Class 또는 Parent Class라고 합니다. 아래쪽에 있는 클래스는 Subclass 또는 Child Class라고 합니다. 다중 상속은 불가능합니다. 다른 클래스를 상속하는 것을 Subclassing이라고 합니다. Subclass는 Super Class에 선언되어 있는 멤버들을 상속하고, 상속된 멤버들을 자유롭게 사용할 수 있습니다. class Cl..

    Swift 별 출력하기

    안녕하세요:) 오늘은 Swift를 이용해서 별을 출력해보려고 합니다.. 시작해볼까요? 문제1. * ** *** **** ***** ****** ******* ******** ********* for num in 1 ... 9 { for _ in 1 ... num { print("*", terminator: "") } print() } var str = "" for _ in 1...9 { str += "*" print(str) } 문제 2. ********* ******** ******* ****** ***** **** *** ** * for num in (1...9).reversed() { for _ in 1...num { print("*", terminator: "") } print() } var st..

    Subscript

    오늘은 Subscript에 대해서 알아보겠습니다. 1. Subscript 서브스크립트는 컬렉션 같은 집합의 특정 요소에 접근하는 문법을 의미합니다. 서브스크립트를 이용해 값에 접근하거나 값을 할당할 수 있습니다. 파라미터 수와 형식에는 제한이 없습니다. 대부분 두 개 이하의 파라미터를 사용합니다. 입출력 파라미터, 파라미터 기본값을 지정할 수 없습니다. 파라미터는 생략이 불가능합니다. class List { var data = [1, 2, 3] subscript(index: Int) -> Int { get { return data[index] } set { data[index] = newValue } } } var l = List() l[0] // 1 l[1] = 123 // set 블록 실행 l[0, ..

    Method

    안녕하세요:) 오늘은 Method에 대해서 알아보도록 하겠습니다. 1. Instance Method 메소드는 특정 형식에 속하는 함수입니다. 인스턴스를 통해 호출합니다. 함수는 특정 형식에 연관되지 않는 동작을 구현하고 메소드는 특정 형식에 연관된 동작을 구현합니다. 인스턴스 메소드는 클래스, 구조체, 열거형에서 구현할 수 있습니다. func name(param) -> ReturnType { Code } instance.method(param) // 메소드는 인스턴스 이름으로 호출합니다. class instanceMethod { var data = 0 static var sharedDate = 200 func doSomething() { print(data) instanceMethod.sharedDate..

    Property - 2

    1. Property Observer(속성 감시자) var name: Type = DefaultValue { willSet(name) { // 파라미터 이름을 생략하면 newValue라는 기본 파라미터가 제공됩니다. statements } didSet(name) { // oldValue statements } } class Size { var width = 0.0 { willSet { print(width, "=>", newValue) } didSet { print(oldValue, "=>", width) } } } let s = Size() s.width = 123 2. Type Property(형식 속성) 형식 속성은 형식 자체에 속한 속성입니다. 인스턴스를 생성하지 않고 클래스나 구조체 자체에 값을..

    Property - 1

    안녕하세요:) 오늘은 Property(속성)에 대해서 공부해보도록 하겠습니다. 1. Property 프로퍼티는 구조체와 클래스에서 선언할 수 있습니다. 프로퍼티는 저장 속성과 연산 프로퍼티가 있습니다. 프로퍼티를 사용하기 위해서는 인스턴스가 필요합니다. 인스턴스를 통해서 프로퍼티를 참조하거나 값을 할당하는데 이렇게 인스턴스에 소속되는 프로퍼티를 인스턴스 프로퍼티라고 합니다. 2. Stored Property( 저장 속성) 입력된 값을 저장하거나 저장된 값을 제공하는 역할을 합니다. 상수 및 변수를 사용해서 정의할 수 있습니다. 클래스와 구조체에서는 사용 가능하지만, 열거형에서는 사용할 수 없습니다. 클래스에서 프로퍼티 선언 시 초기값이 할당되지 않은 저장 프로퍼티는 반드시 옵셔널 타입으로 선언해야 합니다..

    Structure and Class

    안녕하세요:) 오늘은 구조체와 클래스에 대해서 알아보도록 하겠습니다!!! 1. Structure and Class 구조체와 클래스는 하나의 큰 코드 블록입니다. 구조체와 클래스 내에서 정의된 변수, 상수는 프로퍼티(속성)라는 이름을 가집니다. 구조체와 클래스 내에서 정의된 함수는 메소드라는 이름을 가집니다. 형식 내부에 구현하는 요소를 멤버라고 합니다. 구조체와 클래스는 프로퍼티, 메소드, 서브스크립트, 초기화 블록, 확장, 프로토콜을 선언할 수 있습니다. 클래스는 구조체보다 상속, 소멸화 구문, 참조에 의한 전달의 기능을 가지고 있습니다. struct StructName { property method initializer subscript } class ClassName { property metho..

    Enumeration

    안녕하세요:) 오늘은 Enumeration에 대해서 알아보도록 하겠습니다. 1. Enumeration 열거형이란 하나의 주제로 연관된 데이터들이 멤버로 구성되어 있는 자료형 객체를 의미합니다. 열거형에 포함된 상수들은 상수라고 부르지 않고 Enumeration Case라고 부릅니다. 짧게 case라고 합니다. 열거형은 독립적인 자료형입니다. 열거형에 포함되어 있는 Case도 독립적인 이름을 가지고 있습니다. 열거형을 사용하면 코드의 가독성과 안전성이 높아집니다. 변수나 상수에 enum의 타입을 명시해주면 형식추론이 가능해집니다. 열거형은 보통 switch문과 함께 사용됩니다. enum TypeName { // 문법: 열거형은 독립적인 형식, UppercamelCase case caseName case c..