[ 함수 기본 ]
함수의 기본 형태
//기본형태 func 함수이름 (매개변수: 변수타입) -> 반환타입 { 함수 구현부 retun 반환값 } func getName (firstName:String, lastName:String) -> String { return firstName + lastName }
반환값이 없는경우
//리턴하는 값이 없는경우 func 함수이름 (매개변수: 변수타입) -> Void { 함수 구현부 reutn 반환값 } func sum (a:Int, b:Int) -> Void { print(a+b) } // 리턴값이 없는경우 반환타입의 생략이 가능하다 func sum (a:Int, b:Int) { print(a+b) }
매개변수가 없는경우
//매개변수가 없는 경우 func 함수이름 () -> 반환타입 { 함수구현부 return 반환값 } func maximumIntegerValue() -> Int { return Int.max }
매개변수와 반환값 모두가 없는경우
func 함수이름 () -> Void { 함수 구현부 return } func hello () -> Void { print("Hello") } // 반환값이 없는경우 반환타입 생략가능 func hello () { print("Hello") }
[ 함수 고급 ]
매개변수 기본값
매개변수가 들어오지 않을경우 디폴트로 설정해둘 수 있음
func 함수이름 (매개변수명: 매개변수 타입 = 디폴트값) -> 반환타입 { 함구구현부 return } func getName (name:String = "철수") -> Void { print(name) } getName() //철수 출력 getName(name:"영희") //영희 출력
전달인자 레이블
함수를 호출할때 인자를 좀 더 명확하게 알 수 있도록 하기위해 사용한다
//기본적으로 아래의 형태를 가진다 func 함수이름(아규먼트레이블 파라미터이름: 파라미터타입) { // 함수 내부 코드 } //만약 아래의 경우 func move(start: String, end: String) { print("Moving from \(start) to \(end)") } //이와같이 호출하게 되는데 move(start: "Seoul", end: "New York") // 이때 start와 end만 보고서는 내용 자체를 이해하기 어렵다 사작하고 끝내는건지 // 오고가는건지등등 호출 구문에서 좀 더 명확하게 알기위해 아래와 같이 수정할 수 있다. func move(from start: String, to end: String) { print("Moving from \(start) to \(end)") } move(from: "Seoul", to: "New York") // 이처럼 사용하면 from이 출발지를 to가 목적지를 의미한다는것을 좀 더 명확히 알 수 있다
주의점은 호출시 사용하는 이름과 함수 구현부에서 사용하는 이름이 다르다는 점을 인지하자
가변 매개변수
전달되는 인자의 수가 명확하지 않을때 사용할 수 있다
아래와 같은 형태를 가진다
func 함수이름(파라미터명: 파라미터타입...) { // 함수 본문 }
함수당 하나만 가질 수 있고 맨뒤쪽에 작성하는것을 권장한다
함수내에서는 배열로 처리된다
func sumOfNumbers(numbers: Int...) -> Int { print(numbers) // 출력[1, 2, 3, 4, 5] var sum = 0 for number in numbers { sum += number } return sum } let result = sumOfNumbers(numbers: 1, 2, 3, 4, 5) print(result) // 출력: 15
주의점은 매개변수를 가지는 함수는 그 자체로 변수에 할당할 수 없다는 점이다
Share article