이 포스팅은 위 유튜브 영상을 보고 작성하는 포스팅이다.(01:10:39 ~ 01:27:15, Functions(2))
좀 더 파워풀한 함수를 배워보자. 배워볼 파워풀한 함수는 데이터를 받기도 하고 데이터를 내놓기도 한다.
함수를 영어로 Method와 Function으로 부르는데 둘 다 같은 의미임을 알아두자.
일단 데이터를 내놓는 함수를 살펴보자. 보통 데이터를 리턴한다고 표현한다. 형태는 다음과 같다.
func name()-> DataType {
some code
return someValue
}
DataType이라고 적힌 부분은 리턴할 데이터의 DataType을 적는다. String, Int 등과 같은 형태가 들어갈 것이다.
예시를 보도록 하자.
func addTwoNumbers() -> Int {
let a = 1
let b = 1
let c = a + b
return c
}
함수 이름 옆에 하이폰(-)과 오른꺽쇠(>)로 화살표 모양을 만든후 오른쪽에 데이터타입을 입력한 것을 확인하자.
함수를 만든 후 함수를 사용하기 위해 add정도만 입력해도 xcode에서 어떤 데이터 타입을 리턴하는 함수인지 보여준다.
다음과 같이 함수를 사용해보자.
func addTwoNumbers() -> Int {
let a = 1
let b = 1
let c = a + b
return c
}
let sum = addTwoNumbers()
print(sum)
함수는 2를 리턴하게 되고 2는 sum이라는 let 상수에 저장된다.
함수 안에서 c라는 상수를 선언하고 여기에 a와 b를 더한 값을 저장하고 있는데 굳이 선언하지 않고 a+b의 값을 리턴하는 방법은 다음과 같다.
func addTwoNumbers() -> Int {
let a = 1
let b = 1
return a + b
}
let sum = addTwoNumbers()
print(sum)
이제 데이터를 받은 함수를 알아보도록 하자.
받을 데이터를 영어로는 Parameter, 우리나라 말로는 매개변수라고 한다. 위의 함수를 데이터를 받는 형태로 바꿔보자.
즉, 두 값을 받고 두 값을 더한 값을 리턴하는 함수를 만들어보자.
형태는 다음과 같다.
func name(argumentLabel paramterName:DataType){
some code
}
Data Type은 어떤 Data Type의 매개 변수을 받을것인가 명시한다.
parameterName은 매개변수가 함수안에서 쓰일 이름이다.
argumentLabel은 함수를 사용할 때 보여지는 이름이다. 약간 혼란스러울 수 있으니 예시를 바로 보도록 하자.
func addTwoNumbers(arg para:Int) -> Int {
let a = para
let b = 1
return a + b
}
let sum = addTwoNumbers()
print(sum)
위와 같이 함수를 선언하면 아래 함수를 사용하는 쪽에서 에러가 발생할 것이다. 파라미터가 필요한 함수인데 파라미터 없이 사용했기 때문이다.
지우고 다시 함수 이름을 적으면 xcode가 함수를 띄워준다. auto complete기능이라 하고 우리말로는 자동완성 기능이라고 한다.

더블 클릭하면 해당 함수를 불러온다. 그리고 사용까지 했을 때 코드의 모습은 다음과 같다.
let sum = addTwoNumbers(arg : 2)
여기서 함수 정의 할 때 사용했던 arg가 보인다. 즉, 함수를 호출해서 사용할 때 어느 매개변수(여기서는 arg)에 어떤 값(여기서는 2)을 넣어줄 거라고 위와 같이 표시해줄 수 있는 것이다. 다시 정의된 함수를 살펴 보자.
func addTwoNumbers(arg para:Int) -> Int {
let a = para
let b = 1
return a + b
}
arg가 2로 들어가면 함수 내부에서는 para의 값이 2가 되고 함수 내부의 연산에 따라 3을 리턴할 것이다.
정리하면 arg는 함수 외부에서 매개변수를 표시할 때 사용하는 이름, para는 함수를 정의할 때 사용할 때 매개변수를 표시하는 이름이다.
이제 매개변수를 두개를 받는 함수를 정의해보자. 정의해보기에 앞서 형태를 먼저 살펴보자.
func name(arg1 param1:DataType, arg2 param2:DataType){
some code
}
바로 예시에 적용시켜보자.
func addTwoNumbers(arg para:Int, arg2 para2:Int) -> Int {
let a = para
let b = para2
return a + b
}
let sum = addTwoNumbers(arg : 2, arg2 : 2)
print(sum)
함수를 위와 같이 매개변수를 두개를 받도록 정의하면 함수를 호출하는 쪽에서 에러를 발생시킬 것이다. 당황하지말고 호출하는 쪽에서도 매개변수를 2개 넣어주도록 하자.(arg :2, arg2 :2)
결과로 4가 출력됨을 확인할 수 있다.
addTwoNumbers함수에서 a, b 상수를 선언하지 않고 다음과 같이 간략하게 사용할 수도 있다.
func addTwoNumbers(arg para:Int, arg2 para2:Int) -> Int {
return para + para2
}
argumentLabel은 다음과 같이 표시를 안해줘도 된다.
func addTwoNumbers(para:Int, para2:Int) -> Int {
return para + para2
}
단, 함수를 호출해서 사용할 때 다음과 같이 호출 해야 한다.
let sum = addTwoNumbers(para : 2, para2 : 2)
argumentLabel과 parameterName의 이름은 자유롭게 지으면 된다. 다음은 문장처럼 보이게 이름을 지은 예시다.
func addTwoNumbers(using para:Int, and para2:Int) -> Int {
return para + para2
}
let sum = addTwoNumbers(using : 2, and : 2)
print(sum)
argumentLabel도 사용하지 않을 수 있다. 다음과 같이 함수를 작성하면 된다.
func addTwoNumbers(_ para:Int, _ para2:Int) -> Int {
return para + para2
}
let sum = addTwoNumbers(2, 2)
print(sum)
함수를 호출해서 사용할 때도 값만 넣어주면 된다.
'스위프트' 카테고리의 다른 글
| 스위프트 튜토리얼(10) - Class, 클래스(2) (0) | 2020.12.26 |
|---|---|
| 스위프트 튜토리얼(9) - Class, 클래스(1) (0) | 2020.12.25 |
| 스위프트 튜토리얼(7) - Fuctions, 함수(1) (0) | 2020.12.23 |
| 스위프트 튜토리얼(6) - Loops, 반복문(2) (0) | 2020.12.21 |
| 스위프트 튜토리얼(5) - Loops, 반복문(1) (0) | 2020.12.19 |