본문 바로가기
IT/프로그래밍 노트

008 함수 function

by 33.0 2025. 3. 17.
728x90

Function 함수 

 

기본 문법 

func name(parameters) -> ReturnType {
	statements
}

func ~ ReturnType까지를 Function Head 라고 하고 {}에 속하는 부분은 Function Body라고 한다. 

파라미터(input)를 함수에 넣으면 Return값(output)으로 나오는 원리이다. 

함수 호출 문법은 functionName(parameters) 

 

그럼 여기서 parameter란 뭘까?

Parameter 파라미터

파라미터 즉 매개변수를 말한다. 

함수에 값을 전달하기 위한 변수라는 뜻

어떤 값을 넣어줄 수 있는 "문"과 같은 개념 

func greet(name: String) {
	print("안녕하세요, \(name)님!
}

여기서 name 이 파라미터이다. 

파라미터는 두 종류가 있다. 

1. formal parameter 형식 매개 변수 

어떤 값이 될지 아직 정해지지 않음. 

 

2. Actual Parameter 실제 매개변수 

Argument 인자 라고도 한다 

greet(name : "철수")

이렇게 함수를 호출한다고 가정했을 때 

여기서 "철수"가 Actual Parameter

name 은 Argument Label 

 

3. Argument Label 

func sayHello(with name: String) {
	print("Hello, \(name)")
}

sayHello(with: "철수") //Hello, 철수 출력

 

여기서 with 는 Argument Label, name은 Parameter name 

Argument Label 은 함수를 호출할 때 사용되는 이름이고 

Parameter name은 함수 내부에서 사용하는 이름이다. 

 

함수 호출문법에서 Argument Label인 with가 들어간 것을 알 수 있다. 

 

Argument Label은 Parameter name 앞에서 언더스코어(_)로 생략가능하고 

sayHello("철수")로 생략 가능하다. 

 

Argument Label 생략 규칙 

1. 생략하려면 Argument Label 자리에 언더스코어를 사용해야한다. 

2. Parameter Name은 반드시 필요하며 생략할 수  없다. 

func sayHello(_ name: String) {
    print("Hello, \(name)")
}

sayHello("철수") // "Hello, 철수" 출력

3. 가독성 고려 : Argument Label을 생략하면 코드가 더 직관적인 경우 사용한다. 

    예 ) print("문자열") 처럼 자명한 경우 생략

    반대로 add(number1: 3, to: 5 ) 처럼 명확하게 하고 싶을 때는 Label 을 사용한다. 

 

// Argument Label 생략
func add(_ a: Int, _ b: Int) -> Int {
    return a + b
}
print(add(3, 5)) // 8 출력

// Argument Label 유지
func add(number1 a: Int, to b: Int) -> Int {
    return a + b
}
print(add(number1: 3, to: 5)) // 8 출력

 

 

return 

return 한다 - 함수에서 결과값을 도출해서 함수를 호출한 곳으로 전달한다. 

 

func generateRandomNumber() -> Int {
	return 0
}

return 타입에 맞춰서 Function Body ({}안) 도 타입을 맞춰야 한다. 

 

return의 역할 

1. 스코프를 즉시 종료하는 역할

func checkNumber(_ number: Int) {
    if number < 0 {
        print("음수입니다.")
        return // 여기서 함수 종료
    }
    print("양수입니다.")
}

checkNumber(-5) // "음수입니다." 출력 후 함수 종료
checkNumber(10) // "양수입니다." 출력

2. 값을 호출한 곳으로 되돌려주는 역할 , 예) return a+b

 

주의 사항 

리턴형을 쓰면 모든 경로로 값을 return해야 한다.  

func checkEven(_ number: Int) -> String {
    if number % 2 == 0 {
        return "짝수"
    }
    // 여기서 return을 하지 않으면 에러 발생!
}

func checkEven(_ number: Int) -> String {
    if number % 2 == 0 {
        return "짝수"
    } else {
        return "홀수"
    }
}
// 모든 경우에서 반드시 값을 반환하도록 수정함.

 

 

return type 이 void 타입이면 return키워드 생략 가능

guard문에서 return이 쓰인다면 조기 종료 기능을 하여 안정성과 가독성을 높인다. 

 

728x90