스위프트 방법
스위프트 특정 형태와 연관된 방식의 함수 인
목표 - 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