Latest web development tutorials

스위프트 방법

스위프트 특정 형태와 연관된 방식의 함수 인

목표 - C에서 클래스는 유일한 유형 정의 방법이 있습니다. 그러나 스위프트, 당신은뿐만 아니라 당신은 클래스 / 구조체 / 열거 형을 정의 할 것인지 여부를 선택,하지만 당신은 정의 방법에 작성 유형 (클래스 / 구조체 / 열거)에 신축 할 수 있습니다.


인스턴스 메소드

신속한 언어로 인스턴스 메소드는 특정 클래스 구조 또는 열거 형 인스턴스에 속한다.

인스턴스 방법은 다음과 같은 방법을 제공합니다 :

  • 액세스하고 인스턴스 속성을 수정할 수 있습니다

  • 예 오브젝트 관련 기능을 제공하는

이 중괄호의 유형 사이에 속하는 주위에 방법의 예를 작성합니다 ({}).

암시적인 방법 으로서는 모든 방법 및이 속하는 타입의 다른 인스턴스의 속성을 액세스 할 수있다.

방법의 예는 그것이 속하는 클래스의 특정 인스턴스를 호출 할 수있다.

인스턴스 메서드는 기존 인스턴스가 호출에 분리 될 수 없다.

문법

func funcname(Parameters) -> returntype
{
    Statement1
    Statement2
    ……
    Statement N
    return parameters
}

import Cocoa

class Counter {
    var count = 0
    func increment() {
        count++
    }
    func incrementBy(amount: Int) {
        count += amount
    }
    func reset() {
        count = 0
    }
}
// 初始计数值是0
let counter = Counter()

// 计数值现在是1
counter.increment()

// 计数值现在是6
counter.incrementBy(5)
print(counter.count)

// 计数值现在是0
counter.reset()
print(counter.count)

위의 프로그램 실행 출력은 다음과 같습니다

6
0

카운터 클래스는 세 개의 인스턴스 메소드를 정의한다 :

  • increment 카운터가 하나씩 증가되도록;
  • incrementBy(amount: Int) 증가 지정된 정수 값으로 카운터를 만들;
  • reset 카운터가 0으로 재설정됩니다.

Counter 이 클래스는 또한 가변 속성 선언 count 현재의 카운터 값을 추적하기 위해 사용.


로컬 변수의 이름과 외부 파라미터에있어서의 이름

스위프트 함수 매개 변수는 로컬 이름 (내부적으로 사용되는 함수의 본문에서)와 함수를 호출 할 때 사용되는 외부 이름 (모두를 가질 수 있습니다

스위프트 방법과 매우 유사 목적-C 방법. 함께 들어 의하여 등 : 제 파라미터에있어서 통상 전치사 포인트, 예를 들어 상기 방법에 신속한 이름으로 오브젝티브 C에서, 동일한 추천.

첫 번째 변수는 로컬 변수의 이름의 이름의 방법 스위프트 기본 두 번째 이후의 전역 변수 이름 변수 이름 동시에 기본.

다음 예 'NO1'는 빠른에서 매개 변수 이름에 로컬로 선언했다. 글로벌 선언에 대해 '아니오 2'와 외부 프로그램을 통해 액세스.

import Cocoa

class division {
    var count: Int = 0
    func incrementBy(no1: Int, no2: Int) {
        count = no1 / no2
        print(count)
    }
}

let counter = division()
counter.incrementBy(1800, no2: 3)
counter.incrementBy(1600, no2: 5)
counter.incrementBy(11000, no2: 3)

위의 프로그램 실행 출력은 다음과 같습니다

600
320
3666

외부 이름 설정을 제공 여부

우리는 (# 기호를 사용하기 전에 스위프트 2.0) 외부 사용과 같은 로컬 이름의 이름에 외부 이름을 추가 할 첫 번째 인수를 강제로.

대신에, 우리는 외부 이름을 제공하지 않는 두 번째 이후 인수를 설정 (_) 또한 밑줄 사용할 수있다.

import Cocoa

class multiplication {
    var count: Int = 0
    func incrementBy(first no1: Int, no2: Int) {
        count = no1 * no2
        print(count)
    }
}

let counter = multiplication()
counter.incrementBy(first: 800, no2: 3)
counter.incrementBy(first: 100, no2: 5)
counter.incrementBy(first: 15000, no2: 3)

위의 프로그램 실행 출력은 다음과 같습니다

2400
500
45000

자기 속성

유형의 각 인스턴스는 인스턴스 자체와 완전히 동일하지만 암시 적 자기라는 속성 자체가 있습니다.

당신은 현재 인스턴스를 참조하는 인스턴스 메서드 인스턴스에이 암시 적 자기에게 속성을 사용할 수 있습니다.

import Cocoa

class calculations {
    let a: Int
    let b: Int
    let res: Int
    
    init(a: Int, b: Int) {
        self.a = a
        self.b = b
        res = a + b
        print("Self 内: \(res)")
    }
    
    func tot(c: Int) -> Int {
        return res - c
    }
    
    func result() {
        print("结果为: \(tot(20))")
        print("结果为: \(tot(50))")
    }
}

let pri = calculations(a: 600, b: 300)
let sum = calculations(a: 1200, b: 300)

pri.result()
sum.result()

위의 프로그램 실행 출력은 다음과 같습니다

Self 内: 900
Self 内: 1500
结果为: 880
结果为: 850
结果为: 1480
结果为: 1450

값 유형 인스턴스 메소드를 수정

스위프트 언어 구조 및 열거 값 유형입니다. 일반적으로, 속성 값의 형식은 인스턴스 방법으로 변형 될 수 없다.

하지만 당신이 정말로 특정 방식으로 구조 또는 열거 속성을 변경해야하는 경우, 당신은 방법을 (돌연변이) 변화를 선택할 수 있습니다, 다음 방법은 내부 방법과 속성 변경이 가능하며 변경 사항을, 그리고 그것을 수행 이 방법의 마지막에 원래 구조로 남아있을 것이다.

또한,이 방법은 방법 원본 인스턴스를 대체하는 묵시적 자체의 속성이 할당 그것을이 새 인스턴스의 새로운 인스턴스를 제공 할 수 있습니다.

import Cocoa

struct area {
    var length = 1
    var breadth = 1
    
    func area() -> Int {
        return length * breadth
    }
    
    mutating func scaleBy(res: Int) {
        length *= res
        breadth *= res
        
        print(length)
        print(breadth)
    }
}

var val = area(length: 3, breadth: 5)
val.scaleBy(3)
val.scaleBy(30)
val.scaleBy(300)

위의 프로그램 실행 출력은 다음과 같습니다

9
15
270
450
81000
135000

프로세스 변수의 자신에게 할당

속성을 할당 할 수 있습니다 변수 방법은 자기가 새로운 인스턴스를 암시.

import Cocoa

struct area {
    var length = 1
    var breadth = 1
    
    func area() -> Int {
        return length * breadth
    }
    
    mutating func scaleBy(res: Int) {
        self.length *= res
        self.breadth *= res
        print(length)
        print(breadth)
    }
}
var val = area(length: 3, breadth: 5)
val.scaleBy(13)

위의 프로그램 실행 출력은 다음과 같습니다

39
65

입력 방법

인스턴스 메소드이 메소드는 유형의 인스턴스라고하고, 또한,이 방법은 입력 메소드 호출, 방법의 타입이 자신을 호출 정의 할 수있다.

문 구조와 정적 키워드 FUNC 키워드 방법 전에 열거 형 방법. 클래스는 서브 클래스가 부모 클래스 구현을 재정의 할 수 있도록 키워드 클래스를 사용할 수 있습니다.

도트를 사용하여 동일한 유형 및 인스턴스 메소드 (.) 구문 호출합니다.

import Cocoa

class Math
{
    class func abs(number: Int) -> Int
    {
        if number < 0
        {
            return (-number)
        }
        else
        {
            return number
        }
    }
}

struct absno
{
    static func abs(number: Int) -> Int
    {
        if number < 0
        {
            return (-number)
        }
        else
        {
            return number
        }
    }
}

let no = Math.abs(-35)
let num = absno.abs(-5)

print(no)
print(num)

위의 프로그램 실행 출력은 다음과 같습니다

35
5