본문 바로가기

스위프트

스위프트 튜토리얼(7) - Fuctions, 함수(1)

youtu.be/Ulp1Kimblg0?t=3661

이 포스팅은 위 유튜브 영상을 보고 작성했다.

 

개인적인 생각으로 프로그래밍의 꽃은 함수라고 생각하는데 그 시간이 되었다.

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)
}

 

다음 포스팅에서는 함수를 더 업그레이드 시켜보도록 하자.