Swift 문법: 방법 (방법)

전재 출처 설명:http://blog.csdn.net/jinnchang/article/details/43315381
1. 개념
방법 은 특정 유형 과 연 결 된 함수 입 니 다.
2. 실례 방법
실례 방법 은 특정 클래스, 구조 체 또는 매 거 유형의 실례 에 속 하 는 방법 이다.(문법 과 함수 일치) 주의: 실례 방법 은 기 존의 실례 에서 벗 어 나 호출 될 수 없습니다.
class Counter {
    var count = 0
    func increment() {
        count++
    }
    func incrementBy(amount: Int) {
        count += amount
    }
    func reset() {
        count = 0
    }
}

let counter = Counter() 
counter.increment() 
counter.incrementBy(5) 
counter.reset() 

3. 방법의 매개 변수 이름
함수 매개 변 수 는 로 컬 매개 변수 이름과 외부 매개 변수 이름 을 동시에 가 질 수 있 으 며, 이 용법 은 방법 매개 변수 에 도 적용 된다 는 것 을 알 고 있 습 니 다.
다른 것 은 코드 가 쉽게 해석 되 기 위해 서 (Swift 에서 방법의 이름 은 보통 하나의 전치사 로 방법 을 가리 키 는 첫 번 째 매개 변수, 예 를 들 어 with, for, by 등) 입 니 다. Swift 에서 의 방법 은 기본 적 인 첫 번 째 매개 변 수 는 로 컬 매개 변수 이름 일 뿐 이 고 후속 매개 변 수 는 로 컬 매개 변수 이름과 외부 매개 변수 이름 (매개 변수 이름 앞 에 '\ #' 기 호 를 추가 한 것 과 같 습 니 다).
다음은 예 를 들 어 설명 한다.
class Counter {
    var count: Int = 0
    func incrementBy(amount: Int, numberOfTimes: Int) {
        count += amount * numberOfTimes
    }
}

let counter = Counter() 
counter.incrementBy(5, numberOfTimes: 3)

첫 번 째 매개 변수 에 외부 매개 변수 이름 을 정의 할 필 요 는 없 지만, 후속 매개 변 수 는 외부 매개 변수 이름 에 의 해 제한 되 어 호출 될 때 그 역할 을 명 확 히 할 수 있 습 니 다. 추가 매개 변수 에 외부 이름 을 제공 하지 않 으 려 면 밑줄 을 그 을 수 있 습 니 다. ""이 매개 변수의 명시 적 외부 이름 으로 기본 행동 을 덮어 씁 니 다."
4. 변이 방법
일반적인 상황 에서 값 형식의 속성 은 인 스 턴 스 방법 에서 수정 할 수 없습니다. 단, 변 이 된 방법 (키워드 mutting 을 통 해 설명 하 는 방법) 을 통 해 방법 내부 에서 인 스 턴 스 속성의 값 을 변경 할 수 있 습 니 다.
struct Point {
    var x = 0.0, y = 0.0
    mutating func moveByX(deltaX: Double, y deltaY: Double) {
        x += deltaX
        y += deltaY
    }
}

var somePoint = Point(x: 1.0, y: 1.0)
somePoint.moveByX(2.0, y: 3.0)
println("The point is now at (\(somePoint.x), \(somePoint.y))")
// prints "The point is now at (3.0, 4.0)"

주의: 구조 체 유형 상수 에서 변이 방법 을 호출 할 수 없습니다. 상수 의 속성 이 바 뀌 지 않 기 때문에 상수 의 변수 속성 을 바 꾸 려 고 해도 안 됩 니 다.
5 、 self 속성
유형의 모든 인 스 턴 스 는 self 라 고 함 축 된 속성 이 있 습 니 다. self 는 이 인 스 턴 스 자체 와 완전히 같 습 니 다.
enum TriStateSwitch {
    case Off, Low, High
    mutating func next() {
        switch self {
        case Off:
            self = Low
        case Low:
            self = High
        case High:
            self = Off
        }
    }
}

var ovenLight = TriStateSwitch.Low
ovenLight.next()
ovenLight.next()

여기 기록: Backgrounds 를 통 해 상기 코드 를 실행 한 결과, ovenLight. next () 의 결 과 는 예상 한 결과 가 아 닌 것 을 발 견 했 습 니 다. 자신 이 디 버 깅 에 문제 가 있 었 는 지, 아니면 Swift 나 Xcode 의 bug 가 있 었 는 지 모 르 겠 습 니 다.
6. 유형 방법
형식 자체 호출 방법 은 유형 방법 입 니 다. 성명 류 의 유형 방법 은 방법의 func 키워드 앞 에 키워드 class 를 추가 합 니 다. 성명 구조 체 와 매 거 진 유형 방법 은 방법의 func 키워드 앞 에 키워드 static 를 추가 합 니 다.
struct Rectangle {
    static var color : String = "red"
    static var length = 0
    static var width = 0
    static func calPerimeter() -> Int {
        return (length + width)*2
    }
    static func describe() -> String {
        return "The Rectangle's perimeter is \(calPerimeter()) and color is \(color)"
    }
}

Rectangle.describe()

상기 예 를 통 해 알 수 있 듯 이 하나의 유형 방법 (클래스, 구조 체, 매 거 진) 은 이 유형의 다른 유형 방법의 이름 을 호출 할 수 있 으 며, 방법 명 앞 에 유형 이름 의 접 두 사 를 붙 이지 않 아 도 됩 니 다. 구조 체 와 매 거 진 유형 방법 도 유형 이름 접 두 사 를 붙 이지 않 고 정적 속성의 이름 으로 직접 접근 할 수 있 습 니 다.
7. 결어
글 마지막 업데이트 시간: 2015 년 1 월 31 일 19: 47: 40.

좋은 웹페이지 즐겨찾기