Methods
목차
- Instance Method
- Type Method
Class, Structure, Enumeration 모두 생성 가능
1. Instance Method
Modifying Value Types from Within Instance Methods
- 기본적으로, Value 타입의 property는 인스턴스 메소드 안에서 수정될 수 없음. (여기서말하는 value 타입은 struct, enum)
- mutating 키워드 : 메소드에서 property의 수정이 가능하도록 정의하기 위해 추가
struct Point {
var x = 0.0, y = 0.0
mutating func moveBy(x deltaX: Double, y deltaY: Double) {
x += deltaX
y += deltaY
}
}
var somePoint = Point(x: 1.0, y: 1.0)
somePoint.moveBy(x: 2.0, y: 3.0)
print("The point is now at (\(somePoint.x), \(somePoint.y))")
// Prints "The point is now at (3.0, 4.0)"
2. Type Method
- 타입 자체에서 호출되는 메소드
- func 키워드 앞에 static 키워드 작성
- Objective-C에서는 Class에서만 type-level method를 정의할 수 있었다. Swift에서는 모든 클래스, 구조체, 열거형에서 정의 가능
class SomeClass {
class func someTypeMethod() {
// type method implementation goes here
}
}
SomeClass.someTypeMethod()
struct LevelTracker {
static var highestUnlockedLevel = 1
var currentLevel = 1
static func unlock(_ level: Int) {
if level > highestUnlockedLevel { highestUnlockedLevel = level }
}
static func isUnlocked(_ level: Int) -> Bool {
return level <= highestUnlockedLevel
}
@discardableResult
mutating func advance(to level: Int) -> Bool {
if LevelTracker.isUnlocked(level) {
currentLevel = level
return true
} else {
return false
}
}
}
Ref.
https://docs.swift.org/swift-book/LanguageGuide/Methods.html
'iOS > Swift' 카테고리의 다른 글
[Swift 5.2] Subscripts - Apple Documentation (0) | 2020.03.05 |
---|---|
[Swift] ExpressibleByStringLiteral, CustomStringConvertible (0) | 2020.02.18 |
[Swift4.1] map, flapMap, compactMap (0) | 2019.12.11 |
[Swift 5.2] Properties - Apple Documentation (0) | 2019.12.08 |
[Swift5.1] Overview (0) | 2019.12.04 |