Programming/Swift

Swift 함수

patrick610 2020. 6. 23. 00:32
반응형
SMALL

함수

   애플리케이션 동작의 기본 단위 : 함수

   함수 작성

      func 키워드로 정의
      함수의 리턴 타입
      함수 이름
      함수 파라미터

   함수 정의 

* 파라미터, 리턴 값이 없는 함수
func greeting() {
   print("Hello Swift")
}

* 사용
greeting()

 

   실행 결과

     ->로 결과 타입 작성

* 반환 타입이 없으면(Void) - 생략 가능
func greeting() -> Void {
}

* 반환 타입과 같은 타입의 값 반환
func areYouOK() -> Bool {
   return true
}
func favoriteDrink() -> String {
   return "Coffee"
}



      다수의 값 반환 : 튜플

* 튜플 반환 함수 정의
func random3() -> (Int, Int, Int) {
   let r1 = Int(arc4random() % 10)
   let r2 = Int(arc4random() % 10)
   let r3 = Int(arc4random() % 10)
   
   return (r1, r2, r3)
}
* 사용
var (num1, num2, num3) = random3()
print("Random1 : \(num1) Random2 : \(num2) Random3 : \(num3)")
* 한번에 
var r = random3()

 

함수의 파라미터      


      함수 파라미터

         함수 동작에 필요한 정보 전달
         파라미터 이름
         파라미터 타입


      파라미터가 있는 함수

* 파라미터 1개
func greeting(person: String) {
   print("Hello " + person)
}

* 파라미터 2개
func greeting(person: String, emotion: String) {
   print("Hello " + person + " with " + emotion)
}



      파라미터 이름

         내부 파라미터 이름
         외부 파라미터 이름


         내부 파라미터 이름

            함수 내부에서 접근, 사용
            함수 외부에서 접근/사용 불가

func greeting(person: String) {
   print("Hello " + person)
}



         외부 파라미터 이름

            함수 외부(함수 호출)에서 사용
            함수 내부에서 접근 불가

* 내부 파라미터 이름으로 자동 적용
func greeting(person: String) {
   print("Hello " + person)
}
greeting(person: "My Friend")

* 파라미터가 2개인 함수 호출
greeting(person:"My Friend", emotion:"Smile")



            수동으로 설정하기 - 파라미터 앞에 선언
            별도로 설정하지 않으면 - 내부 파라미터 이름과 동일\

func greeting(who person: String) {
   print("Hello " + person)
}
greeting(who: "Swift")

func greeting(person: String, with emotion: String) {
   print("Hello " + person + " with " + emotion)
}
greeting(person: "My Friend", with: "Hug")



         외부 파라미터 이름 사용 생략

            파라미터 앞에 _ 기호 사용

 
       오버로딩

* 같은 함수 이름, 다른 파라미터 타입
func sayHello(msg: String) {
   print("sayHello(msg:)")
}

* 다른 외부 파라미터 이름
func sayHello(_ msg: String) {
   print("sayHello(_:)")
}

* 다른 파라미터 타입
func sayHello(_ times: Int) {
   print("sayHello(_:)")
}



         파라미터 기본 값

func greeting(person: String = "Friend") {
   print("Hello \(person)")
}

greeting(person: "Mom")   // Hello Mom
greeting()                // Hello Friend



         혼동 주의

* 어느 메소드가 실행되는가?
greeting(whom: "World")

func greeting(whom person: String) {
   print("Hello " + person)
}
func greeting(whom person: String, emotion: String = "Happy") {
   print("Hello " + person + " with " + emotion)
}



      가변 길이 파라미터(Varidic Parameter)

         갯수가 정해지지 않은 다수의 파라미터
         타입에 '...' 사용
         함수 파라미터에 하나만 사용 가능
         함수 내부에서 배열로 사용

func addAll(_values: Int...) -> Int {
   print(values.count)
   for v in values {
      print(v)
   }
}

addAll(1, 2, 3)



      inout 파라미터

         파라미터 값 변경하기
         파라미터 타입 앞에 Inoout 작성

* 두 값을 바꾸기(swap) 예
func swapTwoValue(_ arg1 : inout Int, _ arg2: inout Int) {
   let temp = arg1
   arg1 = arg2
   arg2 = temp
}

* 호출 : & 사용
var value1 = 1
var value2 = 2
swapTwoValue(&value1, &value2)

 

 

 



출처 : t academy 강좌

반응형
LIST