본문 바로가기
iOS/Swift

[Swift] 함수(func)와 반복문(for-in)

by 혜모리 2022. 11. 3.
728x90

언어를 배울때 function과 for 문은 정말 많이 쓰는 구문 중 하나라고 합니다.

언뜻보면 쉬워보이지만 어려운 조건이 붙으면 이 것들을 어떻게 써줘야 할 지 골치아프기도 하니 사용법을 정확하게 알고 가야겠습니다.


1. 함수 (function)

함수는 어떤 동작을 하는 코드를 하나로 묶어놓는 것입니다.

함수로 동작을 묶어놓으면 필요한 곳에 호출해서 쓰기 좋기 때문입니다. swift에서 함수를 만드는 키워드는 'func' 입니다.

 

func은 기본적으로 값을 전달하면 반환해주는 구조로 되어있습니다.

func 함수이름(매개변수이름1: 매개변수타입1, 매개변수이름2: 매개변수타입2, ...) -> 반환타입 {
	함수 구현부
	return 반환 값
}

 

여기서 괄호 안의 () 전달 인자와 return 뒤 반환값은 없는 경우 생략할 수 있습니다.

반환값이 생략되면 반환타입도 생략할 수 있습니다.

반환타입의 defalt는 반환값이 없다는 뜻의 Void 타입입니다.

🔸 함수이름은 소문자로 시작하며 swift는 기본적으로 카멜 케이스(Camel Case)방식을 사용합니다. 명명법에 대한 자세한 내용은 이후 Naming에서 다루겠습니다.

 

예시)

func sum(a: Int, b: Int) -> Int {
    return a + b
}

sum(a: 4, b: 5) // 9

sum이라는 함수를 호출하면 매개변수 a와 b 값을 받아 둘을 더해준 값을

sum 함수에 Int 타입으로 반환하겠다는 뜻입니다.

a에 4를 넣고 b에 5를 넣으면 9가 출력되겠죠?

 

1-1. 매개변수 기본값

매개변수에 기본값을 세팅하면, 매개변수에 따로 값을 넣지 않아도 기본값 기준으로 함수가 호출됩니다.

func sum(a: Int = 4, b: Int = 5) -> Int {  // a와 b에 각각 4, 5를 넣어줬습니다.
    return a + b
}

sum() // 매개변수를 쓰지 않고도 9가 출력됩니다.

 

1-2. 전달인자 레이블

매개변수이름 앞에 전달인자 레이블을 붙여, 함수 호출 시 전달인자 레이블에 매개변수 값을 작성합니다.

🔸 선언하는 함수 내에서는 전달인자 레이블을 사용해선 안되고, 외부에서만 전달인자 레이블을 사용할 수 있습니다.

func divide(from a: Int, to b: Int) -> Int {  // from, to를 전달인자 레이블로 사용
    return a / b  		// 반드시 함수 내부에서는 a와 b를 사용해야 함
}

divide(from: 10, to: 5) // 2

 

1-3. 가변 매개변수

매개변수가 몇 개 들어가야하는 지 알 수 없을때 가변 매개변수를 사용합니다.

타입 옆에 '...'를 붙여 사용하며 배열 형태로 쓰이게 됩니다.

func printNumbers(numbers: Int...) {  // 매개변수에 숫자를 얼마나 입력할지 알 수 없으므로 ...를 붙임
	for number in numbers {
    	print(number)
    }
}

printNumbers(1, 2, 3)

/* 출력
1
2
3
*/

2. 반복문 (for-in)

반복문도 종류가 여러가지 있는데 오늘은 가장 기초가되는 for-in문을 먼저 살펴보겠습니다.

for 상수 이름 in 순회할 범위 {
	반복 실행할 코드
}

순회할 범위를 상수로서 하나하나 반복 시킨다는 뜻입니다.

순회할 범위가 1...5 (=1~5)라면 상수 1부터 상수 5까지 반복하는 것입니다.

 

예시)

for count in 1...5 {
	print(1 + count)
}
/*
2
3
4
5
6
*/

1부터 5까지의 숫자를 반복에서 1과 더해주는 코드입니다. 

1 + count 여기서 count가 1부터 5까지 반복하는 상수입니다. 그럼 아래와 같이 더해져서 반복합니다.

1 + 1 = 2

1 + 2 = 3

1 + 3 = 4

1 + 4 = 5

1 + 5 = 6

 

 

728x90
반응형

'iOS > Swift' 카테고리의 다른 글

[Swift] 주석과 데이터 타입  (0) 2022.11.07
[Swift] 이름 짓기(Naming)  (2) 2022.11.06
[Swift] print 함수와 문자열 보간법  (0) 2022.11.06
[Swift] 변수(var)와 상수(let)  (0) 2022.11.04
[Swift] 스위프트의 특징  (0) 2022.11.02

댓글