이 포스팅은 위 유튜브 영상을 보고 작성했다.
개인적인 생각으로 프로그래밍의 꽃은 함수라고 생각하는데 그 시간이 되었다.
Function(함수)는 이름이 주어진 코드 블록으로 이름을 부름으로써 실행이 된다.
함수의 기본적인 형태는 다음과 같다.
func name(){
some code
}
바로 예시를 보도록 하자
func addTwoNumbers(){
let a = 1
let b = 2
let c = a + b
print(c)
}
함수 이름이 addTwoNumbers인데 CamelCase형태로 작성하였다.
띄어쓰기 없이 문장을 표현할 때 단어가 끝나고 단어가 시작할 때 대문자로 표현해주는 것이다.
즉, add two nubmers 가 addTwoNumbers가 되는 것이다. 제일 앞 글자는 소문자이다. 이런 규칙을 꼭 지킬 필요는 없지만 개발자끼리 소통을 잘하기 위해서는 지키는 편이 좋다.
위 코드를 작성하고 실행시키면 아무 반응이 없을 것이다. 왜냐하면 저 코드는 함수를 "선언"한 것이지 사용한 것이 아니기 때문이다.
사용하려면 다음과 같이 "함수 이름()"의 형태로 사용할 수 있다.
addTwoNumbers()
위 코드를 실행하면 함수 중괄호 안에 있는 코드가 실행되고 3이 출력되는 것을 확인할 수 있다.
함수는 이름을 통해서 원하는 만큼 실행할 수 있다.
addTwoNumbers()
addTwoNumbers()
addTwoNumbers()
addTwoNumbers()
addTwoNumbers()
위 코드를 실행시킨다면 3만 5번 출력이 될 것이다
이렇게 함수를 사용해서 코드를 작성하게 된다면 디버깅(오류를 찾아내고 고치는 일)을 할 때 효율을 많이 높일 수 있다.
만약 함수를 사용하는 곳에서 문제가 발생했는데 함수 안의 내용이 잘 못 되었다고 판단이 된다면 오히려 다행인 게
함수 안의 내용만 고치면 함수를 사용한 곳에서 문제가 다 해결되기 때문이다.
함수를 작성하고 사용할 때 주의점이 있다. 다시 코드를 보도록 하자.
func addTwoNumbers(){
let a = 1
let b = 2
let c = a + b
print(c)
}
print(c)
위 코드는 오류를 발생시킨다. 제일 아랫줄의 코드는 c를 출력하려고 하는데 사실 c는 함수 안에서만 유효했지 밖에서는 사용할 수 없기 때문이다. c의 스코프(유효한 영역)는 잘 살펴보아야 한다.
다음과 같은 코드도 똑같은 이유로 오류를 발생시킨다.
func addTwoNumbers(){
let a = 1
let b = 2
let c = a + b
print(c)
}
func substractTwoNumbers(){
let d = 1
let e = c - d
}
substractTwoNumbers 함수를 보면 함수 내에 선언하지도 않은 c를 사용하려고 한다. addTwoNumbers에 c가 있긴 하지만 스코프가 다르기 때문에 substractTwoNumbers에서는 사용할 수 없다.
또한 substractTwoNumbers에 a라는 이름의 변수도 사용할 수 있다. addTwoNumbers에 존재하는 a는 addTwoNumbers안에서만 유효하고 addTwoNumbers함수 밖에서는 영향을 주지 않는다.
func addTwoNumbers(){
let a = 1
let b = 2
let c = a + b
print(c)
}
func substractTwoNumbers(){
let a = 1 // addTwoNumbers에서 a라는 변수를 사용했어도 스코프가 다르기 때문에 사용 가능!
let d = 1
let e = a - d
print(e)
}
다음 포스팅에서는 함수를 더 업그레이드 시켜보도록 하자.
'스위프트' 카테고리의 다른 글
스위프트 튜토리얼(9) - Class, 클래스(1) (0) | 2020.12.25 |
---|---|
스위프트 튜토리얼(8) - Fuctions, 함수(2) (0) | 2020.12.24 |
스위프트 튜토리얼(6) - Loops, 반복문(2) (0) | 2020.12.21 |
스위프트 튜토리얼(5) - Loops, 반복문(1) (0) | 2020.12.19 |
스위프트 튜토리얼(4) - Switch Statements (0) | 2020.12.19 |