15. Method and Subscript

Kang.__.Mingu·2021년 7월 26일
0

1. Study Swift

목록 보기
15/25

형식과 연관된 코드 블록을 구현하는 방법과 서브스크립트 문법과 함께 사용할 수 있도록 구현하는 방법

Instance Method

인스턴스와 연관된 메소드를 구현하고 호출하는 방법에 대해 공부

func name(parameters) -> ReturnType {
	Code
}
---
instance.method(parameters)
class Sample {          // struct로 바꾸면 가평식이기 때문에 함수 앞에 반드시 mutating로 바꿔야 한다.
    var data = 0
    static var sharedData = 123
    
    func doSomething() {
        print(data)
        Sample.sharedData       // 형식 이름을 통해서 접근해야 됨
    }
    
    func call() {
        doSomething()
    }
}



let a = Sample()

a.data                      // 메소드는 반드시 인스턴스 이름으로 호출해야한다.
a.doSomething()
a.call()

class Size {
    var width = 0.0
    var height = 0.0
    
    
    func enlarge() {
        width += 1.0
        height += 1.0
    }
    
}

let s = Size()          // 가평식으로 바꾸었다면 let이 아니라 var로 변경해야 오류가 안남
s.enlarge()

Type Method

형식과 연관된 메소드를 구현하고 호출하는 방법에 대해 공부

static func name(parameters) -> ReturnType {
	statements
}
---
class func name(parameters) -> ReturnType {
	statements
}
---
Type.method(parameters)
// 타입 메소드
// 형식에 연관된 메소드

// 클래스, 구조체, 열거형에서 사용

// 상속 관련 문법

class Circle {
    static let pi = 3.14
    var radius = 0.0
    
    func getArea() -> Double {
        return radius * radius * Circle.pi
    }
    
    class func printPi() {
        print(pi)
    }
}

Circle.printPi()


class StrokeCircle: Circle {
    override static func printPi() {
         (pi)
    }
}

Subscript

서브스크립트를 직접 구현하는 방법에 대해 공부

  • instance[index]
  • instance[Key]
  • instance[range]
let list = ["A", "B", "C"]
list[0]
subscript(parameters) -> ReturnType {
	get {
    	return expression
    }
    set(name) {
    	statements
    }
}
class List {
    var data = [1, 2, 3]
subscript(i index: Int) -> Int {        // 아그먼트 레이블 i
    get {
        return data[index]
    }
    
    set {
        data[index] = newValue
    }
}

}

var l = List()
l[i: 0] // 첫 번째 요소

l[i: 1] = 123 // 두 번째 요소 변경

struct Matrix {
var data = [[1,2,3],
[4,5,6],
[7,8,9]]

subscript(row: Int, cool: Int) -> Int {
    return data[row][cool]
}

}

let m = Matrix()
m[0, 0]

profile
최선을 다해 꾸준히 노력하는 개발자 망고입니당 :D

0개의 댓글