Swift 함수


  1. 함수란? 애플리케이션에서의 동작의 기본 단위를 의미한다.
    1. 함수 작성 방법
      함수 정의 및 사용
      1. 함수 정의
      func greeting() {
         print("Hello Swift")
      }

      2. 함수 사용
      greeting()
    2. 함수의 실행 결과 반환 : 반환 타입 중 Void는 생략 가능 그 외에는 모두 "-> 반환타입"으로 명시한다.
      함수의 실행 및 반환
      1. 함수 정의
      func greeting() -> String {
         return "Hello Swift"
      }

      2. 함수 사용
      var str = greeting()
      print(str) // Hello Swift 출력
    3. 함수 파라미터 : 함수 동작에 필요한 정보를 전달하는데 사용된다.
      1. 함수 파라미터 정의
        함수 파라미터 정의
        1. 파라미터 1개
        func greeting(person : String) {
           print("Hello \(person)")
        }
        2. 파라미터 2개
        func greeting(person : String, emotion : String) {
           print("Hello \(person) with \(emotion)")
        }
      2. 파라미터 이름의 종류
        1. 내부 파라미터 : 함수 내부에서 접근 및 사용한다.
          함수 내부 파라미터
          1. 내부 파라미터
          func greeting(person : String) {
             print("Hello \(person)")
          }
          // 내부 파라미터는 함수 내부에서 접근 및 사용에 쓰인다.
        2. 외부 파라미터 : 함수 내부에서 접근 및 사용할 수 없으며, 외부에서 함수로 필요한 정보를 전달하는 역할을 한다.
          함수 외부 파라미터
          1. 내부 파라미터와 외부 파라미터의 이름이 동일
          func greeting(person : String) {
             print("Hello \(person)")
          }

          greeting(person : "My Friend") // Hello My Friend 출력
          // 외부 파라미터는 함수 내부로 필요한 정보를 전달 시에 사용

          2. 외부 파라미터 이름을 수동을 설정
          func greeting(who person : String) {
             print("Hello \(person)")
          }

          greeting(who : "Jun") // Hello Jun 출력
    4. 파라미터 기본값 설정 방법 : 기본값 설정은 생략 가능하며, 함수 사용 시에 외부에서 함수로 넘겨주는 값이 없는 경우에만 사용된다.
      파라미터 기본값 설정
      func greeting(person : String = "Mom") {
         print("Hello \(person)")
      }

      greeting(person : "My Friend") // Hello My Friend 출력
      greeting() // Hello Mom 출력
    5. 파라미터는 함수 내부에서 상수로 사용하여 변경 시 에러가 발생하는데 변경이 필요한 경우는 inout 키워드로 변경가능하도록 한다.
      함수 내부에서 파라미터 변경
      func tryParamValueChange1(arg : Int = 0) {
         arg = arg + 1 // 에러 발생
      }

      func tryParamValueChange2(arg : inout Int = 0) {
         arg = arg + 1 // 에러 발생하지 않고 변경 가능
      }

      tryParamValueChange2(1) // 2로 변경

      func swapTwoValue(_ arg1 : inout Int, _ arg2 : inout Int) {
        let temp = arg1
        arg1 = arg2
        arg2 = temp
      }

      var value1 = 1
      var value2 = 2
      swapTwoValue(&value1, &value2)
      // value1에는 2, value2에는 1로 변경되며 &로 사용해야 변경
    6. 함수와 옵셔널 : 함수의 반환 타입, 함수 파라미터에 옵셔널로 선언되면 nil 사용이 가능하다.
      1. 함수의 반환 타입에 옵셔널 선언 : 반환 타입에 nil 반환이 가능하다.
        함수 반환 타입에 옵셔널 선언
        func nilReturnFunction() -> Int? {
           return nil
        }

        if let ret = nilReturnFunction() {
           print("실행 결과 : \(ret)") // 실행 결과 : nil 출력
        }
      2. 함수 파라미터에 옵셔널 선언 : 파라미터 사용 전에 반드시 nil 여부를 판단해서 사용하도록 한다. (nil 여부 판단은 if 문이나 guard 문을 이용한다.)
        함수 파라미터에 옵셔널 선언
        func greeting(person : String, emotion : String?) {
           guard let str = emotion else {
               print("Hello \(person)") // emotion이 nil 인 경우 출력
               return
           }
           print("Hello \(person) with \(emotion)")
           // emotion이 nil이 아닌 경우 출력
        }

        greeting(person : "My Friend", emotion : "play")
        // Hello My Friend with play 출력
        greeting(person : "Mom", emotion : nil)
        // Hello Mom 출력