Swift 문법종합 - 함수

동그라미·2024년 11월 7일
1

8. 함수

/코드스니펫/ 함수의 기본 사용방법

// 함수의 기본 사용방법

// 함수의 정의(선언)
func 함수이름(파라미터 이름: 파라미터 타입) -> 반환타입 {
  // 구현부 
	return 반환 타입의 값
}

// 파라미터가 여러개인 경우
func 함수이름(파라미터1 이름: 파라미터1 타입, 파라미터2 이름: 파라미터2 타입) -> 반환타입 {
  // 구현부 
	return 반환 타입의 값
}

// 파라미터가 없는 경우 
func 함수이름() -> 반환 타입 {
  // 구현부 
	return 반환 타입의 값
}

// 반환값이 없는 경우 
func 함수이름(파라미터 이름: 파라미터 타입) {
	// 구현부
	// 반환타입이 없기때문에 return이 없어도 됩니다.
	// 반환타입이 없는데 중간에 함수를 탈출하고 싶을 때 return을 사용할 수 있습니다.
}

// 파라미터가 없고, 반환값도 없는 경우
func 함수이름() {
	// 구현부
}

함수는 재사용이 가능한 코드의 집합으로, 특정 작업을 수행하는 코드 블록입니다.

  • 함수는 INPUT 을 받아서 작업을 수행하고, OUTPUT을 반환합니다.
  • 동일한 입력에는 동일한 출력이 반환됩니다!

  • 함수는 function이라고 불리며, 코드를 구조적이고 효율적으로 작성하는데 도움을 줍니다.
  • 동일한 작업을 반복해서 작성할 필요 없게 도와줍니다.
  • 함수는 선언과 사용으로 나눌 수 있습니다.
    • 함수의 선언 : 함수를 정의하는 과정입니다.
      • func 키워드를 사용하여 시작합니다.
      • 함수 선언의 4가지 요소
        1. 함수의 이름
        2. 파라미터(이름, 타입)
          • 파라미터는 함수에서 사용될 INPUT의 이름과 데이터타입
        3. 반환 타입
          • 함수에서 결과값으로 반환할 데이터 타입
        4. 구현부
          • 실제 작업을 수행하는 코드 블록
    • 함수의 사용 : 정의한 함수를 호출하여 실제로 실행하는 과정입니다.
      • 함수의 이름뒤에 () 를 사용하여 함수를 실행합니다.
      • () 안에는 파라미터를 넣을 수 있습니다.
      • 함수를 사용하여 나온 결과값을 변수나 상수에 할당할 수 있습니다.

[코드스니펫] 함수의 기본 사용방법

// 함수의 기본 사용방법

// 함수의 정의(선언)
func 함수이름(파라미터 이름: 파라미터 타입) -> 반환타입 {
  // 구현부 
	return 반환 타입의 값
}

// 파라미터가 여러개인 경우
func 함수이름(파라미터1 이름: 파라미터1 타입, 파라미터2 이름: 파라미터2 타입) -> 반환타입 {
  // 구현부 
	return 반환 타입의 값
}

// 파라미터가 없는 경우 
func 함수이름() -> 반환 타입 {
  // 구현부 
	return 반환 타입의 값
}

// 반환값이 없는 경우 
func 함수이름(파라미터 이름: 파라미터 타입) {
	// 구현부
	// 반환타입이 없기때문에 return이 없어도 됩니다.
	// 반환타입이 없는데 중간에 함수를 탈출하고 싶을 때 return을 사용할 수 있습니다.
}

// 파라미터가 없고, 반환값도 없는 경우
func 함수이름() {
	// 구현부
}

[코드스니펫] 함수의 기본 실습

// 실제로 사용해 봅시다!

// 함수의 선언
func sayHello(name: String) -> String { // sayHello 이름의 함수를 정의합니다. 파라미터는 name이며 타입은 String이고, 함수의 반환값의 데이터타입은 String입니다.
	return "\(name)님 안녕하세요!" // 파라미터 name을 사용하여 문자열을 만들어 반환합니다.
}
// 함수의 사용
sayHello(name: "Swift 기초반") // 결과값은 문자열로 "Swift 기초반님 안녕하세요!" 입니다.



// 함수의 선언
func printHello() {
	print("안녕하세요!")
}
// 함수의 사용
printHello()


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

let result = add(a: 3, b: 5) // add 함수를 사용하여 받은 결과값을 result 상수에 할당합니다. 
print(result) // 8

함수 파라미터 이름의 분리

함수의 구현부에서 사용하는 이름과 함수 호출할 때 사용하는 이름을 다르게 설정할 수 있습니다.
기본적으로 함수의 선언부에서 정한 파라미터의 이름은 함수의 구현부와 호출부에서 동일하게 사용됩니다.

 func sayHello(name: String) {
		print("\(name)님 안녕하세요.")
}

sayHello(name: "수강생") 

// sayHello 함수를 정의하는 곳에서 파라미터의 이름이 name이면 
// sayHello 함수를 호출하는 곳에서도 파라미터의 이름은 name을 사용합니다.

Swift에서는 구현부에서 사용하는 파라미터의 이름과 호출부에서 사용하는 파라미터의 이름을 다르게 할 수 있습니다.

  • 첫번째 이름: 함수를 호출할 때 사용하는 이름
  • 두번째 이름: 함수 구현부에서 사용하는 이름
// 스페이스로 띄우고 파라미터 이름을 2개 입력하면 호출, 구현부 에서 사용하는 이름을 정할 수 있습니다.
func sayHello(to name: String) { 
	print("\(name)님 안녕하세요.")
}

// 함수를 정의한 곳에서 파라미터의 이름이 2개 있을 때 첫번째 값이 호출할때 사용하는 이름입니다.
sayHello(to: "수강생") 


// _ 를 사용하여 파라미터의 이름을 생략할 수 있습니다.
// _는 보통 생략하는데 사용됩니다.
// 위에와 동일하게 정의하는 곳에서 파라미터 이름이 2개로 들어가 있습니다.(_, name)
func sayBye(_ name: String) {
	print("\(name)님 안녕히가세요.")
}

sayBye("수강생")

Swift Convention Guide No.5 → 함수의 코드 스타일

  • 함수의 이름은 소문자로 시작해서 Camel Case로 맞춰주세요.
  • 파라미터의 이름은 소문자로 시작해서 Camel Case로 맞춰주세요.
  • -> 연산자 앞뒤로 공백을 넣습니다.
// ✅ 함수의 이름은 messageToBirthday로 message to birthday 의 Camel Case
// ✅ 파라미터의 이름은 isTodayBirthDay로 소문자 Camel Case
func messageToBirthday(isTodayBirthDay: Bool) -> String {
	// 구현부
}

// ❌ 함수의 이름이 소문자로 시작하지만 Camel Case가 아니여서 읽기 힘들어요.
// ❌ 파라미터의 이름이 소문자로 시작하지만 Camel Case가 아니여서 읽기 힘들어요.
func messagetobirthday(istodaybirthday: Bool) -> String {
	// 구현부
}
profile
맨날 최선을 다하지는 마러라. 피곤해서 못산다.

0개의 댓글