[Swift] 함수

김영민·2022년 5월 20일
0

함수

  • 애플리케이션의 동작의 기본 단위

함수 작성

  • func 키워드로 정의
  • 함수의 리턴 타입
  • 함수 이름
  • 함수 파라미터

함수 정의

func greeting() {
	print("hello")
}

greeting()
  • 파라미터, 리턴 값이 없는 함수
  • -> Void 생략 가능 ( ->로 결과 타입 작성 )
func random3() -> (Int,Int,Int) ...
  • 튜플을 이용하여 다수의 값을 반환할 수 있습니다.

파라미터

func greeting(person:String) { ... }
  • 파라미터 1개
func greeting(person:String, number: Int) { ... }
  • 파라미터 2개

파라미터 이름

  • 내부 파라미터 이름
  • 외부 파라미터 이름

외부 파라미터 이름

func greeting(person: String) {
}
greeting(person: "My Friend") //외부 파라미터 person
  • 외부파라미터 이름을 내부 파라미터 이름으로 자동 적용합니다.
  • 함수 내부에서 접근 불가.

외부 파라미터 수동 설정 - 파라미터 앞에 선언

func greeting(who person: String) {
} //who라는 외부 파라미터 이름을 수동으로 설정

greeting(who: "Swift") //외부파라미터 이름 who
  • 위 코드와 같이 외부파라미어 이름을 수동 설정할 수 있습니다.
func greeting(_ person: String) {
} 

greeting("Swift") // _ 로 외부 파라미터 이름 생략
  • _ (언더 스코어) 를 사용하면 외부 파라미터 이름 사용 생략할 수 있습니다.

오버로딩

  • 같은 함수 이름, 다른 외부 파라미터 이름이라면 에러가 발생하지 않습니다!
  • 파라미터 타입이 다른 , 같은 함수 이름을 가진 함수는 다른 함수로 취급합니다!

파라미터 기본값

func greeting(person:String = "Friend") {
}

greeting() 
  • 파라미터 기본값을 설정하면, 함수 호출할 때 파라미터를 생략할 수 있습니다.

가변 길이 파라미터

  • 갯수가 정해지지 않은 다수의 파라미터
  • 타입에 '...' 사용
  • 함수 파라미터에 하나만 사용 가능
  • 함수 내부에서 배열로 사용합니다.

코드 예제

func addAll(_ values: Int ...){
	for v in values {
    	print(v)
    }
}

addAll(1,2,3) //1 2 3
  • 위의 코드와 같이 함수 호출 시 외부 파라미터에 따라 함수를 사용할 수 있습니다.

inout 파라미터

  • 파라미터 : 함수 내부에서는 상수로 사용
  • 따라서 파라미터 변경 시도 시 에러가 발생합니다.

파라미터 값 변경하기 : inout 선언

func PlusTen (_ num: inout Int) -> Int {
	num = num + 10
    return num 
}
var value = 5

PlusTen(&value) //15
  • inout을 통해 파라미터를 바꿀 수 있습니다.
  • 호출 시 파라미터에 &를 사용해야 합니다.

함수와 옵셔널

func returnFunction() -> Int? {
}
  • 위 코드처럼 사용하면 함수의 반환을 nil로 받을 수 있습니다.
  • 옵셔널 바인딩을 하려면 if let이나 guard let을 사용할 수 있습니다.
  • 함수의 파라미터도 옵셔널 사용할 수 있습니다.

함수 내 함수

  • 함수 내부에 함수 정의
  • 함수 외부에서는 사용 불가합니다.

0개의 댓글