스위프트 기능
신속한 함수 특정 작업을 별도의 코드 블록을 달성하기 위해 사용된다.
스위프트는 복잡한 목표 - C 언어 스타일의 접근 방식에 대한 간단한 C 스타일의 함수를 표현하기 위해 통합 구문을 사용합니다.
함수 선언 : 컴파일러 함수 이름을 말할 유형 및 매개 변수를 반환합니다.
함수 정의 : 엔티티 기능을 제공.
스위프트 함수는 매개 변수 유형 및 반환 유형을 포함 :
함수 정의
키워드FUNC를 사용하여 신속한 정의 함수.
정의 함수는 하나 이상의 입력 매개 변수 및 리턴 값 유형을 지정할 수있다.
각 기능은 그 기능을 설명하는 기능 이름이 있습니다. 함수 이름의 파라미터 값과 기능 호출 유형. 주문 전달 함수 파라미터는 동일한 파라미터리스트이어야한다.
함수 매개 변수 목록에 전달 된 인수의 순서는 동일해야합니다-> 당신이 함수의 반환 형식을 정의한 후.
문법
func funcname(形参) -> returntype { Statement1 Statement2 …… Statement N return parameters }
예
우리 w3big 함수라는 함수, 데이터 형식 문자열 문자열의 반환 값의 매개 변수를 정의 아래 :
import Cocoa func w3big(site: String) -> String { return site } print(w3big("www.w3big.com"))
위의 프로그램 실행 출력은 다음과 같습니다
www.w3big.com
함수 호출
우리는 동일해야 순서 파라미터 전달 함수 파라미터리스트의 형태에 대응하는 기능 명 및 파라미터 값을 통해 함수를 호출 할 수있다.
우리가 w3big 함수라는 함수, 매개 변수의 데이터 유형 문자열의 위치를 정의 아래 함수 본체가 직접 데이터 형식이 반환 반환 후, 우리는 전달 함수 인수가 전달 된 String 형의 인수이어야 전화 문자열.
import Cocoa func w3big(site: String) -> String { return site } print(w3big("www.w3big.com"))
위의 프로그램 실행 출력은 다음과 같습니다
www.w3big.com
함수 인수
기능 우리는 또한 튜플 (튜플)을 사용하는 기능을하는 하나 이상의 파라미터를 전달할 수있는 하나 이상의 매개 변수를 사용할 수있다 :
import Cocoa func mult(no1: Int, no2: Int) -> Int { return no1*no2 } print(mult(2, no2:20)) print(mult(3, no2:15)) print(mult(4, no2:30))
위의 프로그램 실행 출력은 다음과 같습니다
40 45 120
매개 변수가없는 함수
우리는 매개 변수없이 함수를 만들 수 있습니다.
구문 :
func funcname() -> datatype { return datatype }
예
import Cocoa func sitename() -> String { return "本教程" } print(sitename())
위의 프로그램 실행 출력은 다음과 같습니다
本教程
함수로 값을 반환 튜플
함수 반환 값 유형은 문자열, 정수, 부동 소수점 유형이 될 수 있습니다.
튜플 배열과 유사한, 차이점은 상기 튜플 요소 괄호를 사용하여 임의의 유형이 될 수있다.
당신은 기능 튜플 (튜플)에서 반환 된 복합 값으로 값의 여러 유형을 가질 수 있습니다.
다음의 예는 명명 된 MINMAX의 정의 (_ ^ 역할 함수 int 배열에서 최소 및 최대 값을 식별한다.
import Cocoa func minMax(array: [Int]) -> (min: Int, max: Int) { var currentMin = array[0] var currentMax = array[0] for value in array[1..<array.count] { if value < currentMin { currentMin = value } else if value > currentMax { currentMax = value } } return (currentMin, currentMax) } let bounds = minMax([8, -6, 2, 109, 3, 71]) print("最小值为 \(bounds.min) ,最大值为 \(bounds.max)")
MINMAX는 (_ : 함수는 쿼리에서 함수의 값을 반환 있도록, 그 값이 최소 및 최대로 표시됩니다 이름으로 액세스 할 수 있습니다,이 지능 값의 튜플을 반환합니다.
위의 프로그램 실행 출력은 다음과 같습니다
最小值为 -6 ,最大值为 109
확실 반환 튜플이 전무하지 않아야하는 경우에, 당신은 선택 튜플 형식을 반환 할 수 있습니다.
당신은 (INT, INT)? 아니면 (문자열, 지능, Bool로)로 선택 튜플을 정의하는 닫는 괄호 튜플 타입 후 물음표를 배치 할 수 있습니다?
같은 옵션 튜플 유형 주
(Int, Int)?
튜플과 같은 옵션 유형이 포함(Int?, Int?)
다른입니다. 옵션 튜플 타입을, 전체 튜플은 선택 사항이며, 단지 각 요소 값 터플.
전면 minMax(_:)
함수는이 포함 반환 Int
값 튜플. 하지만 함수가 들어오는 배열에 보안 검사를 수행하지 않는 array
위에 정의 된 매개 변수가 빈 배열입니다 minMax(_:)
액세스하려고 array[0]
런타임 오류를 트리거합니다.
안전이 "하늘의 배열"문제를 처리하기 위해, minMax(_:)
배열이 비어있을 때 선택 튜플 반환 형식 반환을 사용하여 재 작성 기능 nil
:
import Cocoa func minMax(array: [Int]) -> (min: Int, max: Int)? { if array.isEmpty { return nil } var currentMin = array[0] var currentMax = array[0] for value in array[1..<array.count] { if value < currentMin { currentMin = value } else if value > currentMax { currentMax = value } } return (currentMin, currentMax) } if let bounds = minMax([8, -6, 2, 109, 3, 71]) { print("最小值为 \(bounds.min),组大值为 \(bounds.max)") }
위의 프로그램 실행 출력은 다음과 같습니다
最小值为 -6,组大值为 109
함수의 없음 반환 값 없음
여기 (_ : 함수의 또 다른 버전이, 함수가 반환 형식이 지정되지 않은, 튜토리얼 URL 매개 변수의 공식 웹 사이트를 수신하고, 대신 반환의 직접 출력 문자열 값 w3big된다 :
import Cocoa func w3big(site: String) { print("本教程官网:\(site)") } w3big("http://www.w3big.com")
위의 프로그램 실행 출력은 다음과 같습니다
本教程官网:http://www.w3big.com
함수 매개 변수 이름
함수 인수는 외부 매개 변수 이름과 로컬 매개 변수 이름이 있습니다.
로컬 매개 변수 이름
사용하는 내부 구현의 기능에 로컬 매개 변수 이름.
func sample(number: Int) { println(number) }
로컬 변수 이름의 상기 예를 참조는 함수 본문에 사용될 수있다.
import Cocoa func sample(number: Int) { print(number) } sample(1) sample(2) sample(3)
위의 프로그램 실행 출력은 다음과 같습니다
1 2 3
외부 매개 변수 이름
당신은 공백으로 구분 로컬 매개 변수 이름 앞에 외부 매개 변수 이름을 지정할 수 있습니다, 함수에 전달 된 매개 변수에 대한 외부 매개 변수 이름은 함수가 호출 될 때.
다음과 같은 두 가지 기능 매개 변수 이름을 정의하고 호출 할 수 있습니다 :
import Cocoa func pow(firstArg a: Int, secondArg b: Int) -> Int { var res = a for _ in 1..<b { res = res * a } print(res) return res } pow(firstArg:5, secondArg:3)
위의 프로그램 실행 출력은 다음과 같습니다
125
외부 매개 변수 이름을 제공하는 경우, 다음 함수가 호출 될 때, 외부 매개 변수 이름을 사용해야합니다.
Variable 매개 변수
변수 매개 변수는 0 개 이상의 값을 받아 들일 수 있습니다. 함수가 호출 될 때 함수 인수를 지정하는 변수 매개 변수를 사용할 수 있습니다, 그들의 수는 불확실하다.
변수 유형의 이름으로 변수 매개 변수 (...) 방법으로 정의 할 수 삽입합니다.
import Cocoa func vari<N>(members: N...){ for i in members { print(i) } } vari(4,3,5) vari(4.5, 3.1, 5.6) vari("Google", "Baidu", "w3big")
위의 프로그램 실행 출력은 다음과 같습니다
4 3 5 4.5 3.1 5.6 Google Baidu w3big
상수, 변수 및 I / O 변수
일반적으로 기본 매개 변수 쿼리를 사용할 수있는 유일한 매개 변수, 당신은 그 값을 변경할 수있는 기능에 정의 된 상수 매개 변수입니다.
당신이 변수 매개 변수를 선언하려면이 매개 변수의 값을 변경할 수 있도록, 당신은 앞에 VAR를 추가 할 수 있습니다.
예를 들면 :
func getName(var id:String).........
이 경우, ID 값이 함수에서 변할 수있다.
일반적으로 기본 매개 변수는 참조에 의해 전달되지 값 호출에 의해 전달됩니다. 그래서 함수 변화 내에 들어오는 파라미터 원래 파라미터에 영향을 미치지 않는다. 그냥이 매개 변수의 복사본을 통과시켰다.
전술 한 바와 같이 변수 패러미터들은 단지 함수 본문에서 변경 될 수있다. 계속 당신이 함수는 매개 변수의 값을 수정할 수 있습니다 싶어, 당신은 함수 호출의 끝에서 이러한 변경을 원하는 경우에, 당신은이 매개 변수를 입력 및 출력 매개 변수로 (인 - 아웃 매개 변수)를 정의 놓아야합니다.
키워드 inout를 추가하기 전에, 입력 및 출력 파라미터, 파라미터의 정의를 정의 할 때. 입력 및 출력 변수의 함수의 값을 통과 한 상기 함수 값이 수정 된 후, 원래의 값을 대체하는 기능을 확산.
예
import Cocoa func swapTwoInts(var a:Int,var b:Int){ let t = a a = b b = t } var x = 0,y = 100 print("x = \(x) ;y = \(y)") swapTwoInts(x, b:y) print("x = \(x) ;y = \(y)")
위의 프로그램 실행 출력은 다음과 같습니다
x = 0 ;y = 100 x = 0 ;y = 100
수정은 입출력 키워드를 사용하는 것입니다 :
import Cocoa func swapTwoInts(inout a:Int,inout b:Int){ let t = a a = b b = t } var x = 0,y = 100 print("x = \(x) ;y = \(y)") swapTwoInts(&x, b:&y) print("x = \(x) ;y = \(y)")
위의 프로그램 실행 출력은 다음과 같습니다
x = 0 ;y = 100 x = 100 ;y = 0
기능 유형 및 사용
각 기능은 종이의 종류, 기능 매개 변수의 종류의 특정 기능을 가지며 유형을 리턴한다.
func inputs(no1: Int, no2: Int) -> Int { return no1/no2 }
다음 예는 다음과 같다 :
import Cocoa func inputs(no1: Int, no2: Int) -> Int { return no1/no2 } print(inputs(20,no2:10)) print(inputs(36,no2:6))
위의 프로그램 실행 출력은 다음과 같습니다
2 6
함수 위의 지능은 int 형의 값을 반환 매개 변수의 두 가지 유형을 정의합니다.
다음에 우리는 함수는 String 형, String 형의 반환 값의 매개 변수를 정의하고, 다음과 같은 기능을 확인합니다.
Func inputstr(name: String) -> String { return name }
또한 다음과 같이, 함수 매개 변수 및 유형을 정의 할 수 있습니다 :
import Cocoa func inputstr() { print("本教程") print("www.w3big.com") } inputstr()
위의 프로그램 실행 출력은 다음과 같습니다
本教程 www.w3big.com
사용 기능 유형
신속한 다른 유형의 역할 유형의 사용. 예를 들어, 일정한 또는 입력 기능에 할당 된 적절한 함수의 변수를 정의 할 수있다 :
var addition: (Int, Int) -> Int = sum
해상도 :
"라고 정의 addition
변수, 매개 변수 및 반환 값 유형은이다 Int
,이 새로운 변수를 점하게 sum
기능을."
sum
및 addition
동일한 타입이, 상기 동작은 법적.
지금, 당신은의 할당 함수를 호출 할뿐만 아니라 사용할 수 있습니다 :
import Cocoa func sum(a: Int, b: Int) -> Int { return a + b } var addition: (Int, Int) -> Int = sum print("输出结果: \(addition(40, 89))")
위의 프로그램 실행 출력은 다음과 같습니다
输出结果: 129
매개 변수 유형으로 기능 유형, 반환 유형으로 기능 유형
우리는 다른 매개 변수에 대한 매개 변수로 작동 할 수 있습니다 :
import Cocoa func sum(a: Int, b: Int) -> Int { return a + b } var addition: (Int, Int) -> Int = sum print("输出结果: \(addition(40, 89))") func another(addition: (Int, Int) -> Int, a: Int, b: Int) { print("输出结果: \(addition(a, b))") } another(sum, a: 10, b: 20)
위의 프로그램 실행 출력은 다음과 같습니다
输出结果: 129 输出结果: 30
중첩 된 기능
중첩 함수 내의 새 기능의 정의를 지칭 외부 기능 함수 정의 내의 함수를 호출 할 수있다.
다음 예는 다음과 같다 :
import Cocoa func calcDecrement(forDecrement total: Int) -> () -> Int { var overallDecrement = 0 func decrementer() -> Int { overallDecrement -= total return overallDecrement } return decrementer } let decrem = calcDecrement(forDecrement: 30) print(decrem())
위의 프로그램 실행 출력은 다음과 같습니다
-30