본문 바로가기
Develop/Swift

Swift2 함수 func

by J0DEV 2021. 8. 10.
반응형

Swift에서의 함수를 보자

func sayHello(){
    print("Hello")
}

sayHello()

 

기존의 함수와 비슷한 형태로 쓰인다

 

func 함수명() {
    내용
}

으로 선언되며

 

함수명() 으로 호출하여 사용한다.

 

간단한 String형 인자를 받는 함수를 만들어보자.

func sayHello2(name : String){
    print("Hello \(name)")
}

sayHello2("Cho")

 

name : String

 

내용이 추가되었다.

 

String 형태의 인자를 받아온다는 것이다.

 

실제로 sayHello2("Cho")로 Cho라는 String 인자를 넣어 함수를 호출하면

 

"Hello Cho"가 출력된다.

 

 

 

함수 인자의 default 값도 추가 할 수 있다.

func sayHello3(name : String = "Kim"){
    print("Hello \(name)")
}

sayHello3()

 

default값을 넣어줄 경우에는

 

함수에 인자를 받는 코드에서 default 값을 추가해주면 된다.

 

name : String = "default값" 형태로 말이다.

 

 

다음으로 두개 이상의 인자를 받으면서 return 형태를 지정해 주는 함수를 보자

func sayHello4(name : String = "Kim", age : Int) -> String{
    return "Hello \(name) is \(age) years old"
}
print(sayHello4("Cho", age: 3))

 

함수 끝부분에 "-> String" or "-> Int" 으로 리턴값을 지정해줄 수 있다.

 

 

근데 여기서 "Cho"는 인자를 넣을 때 파라미터를 지정해주지 않지만 age는 파라미터를 지정해주고 있다.

 

그 이유는 처음 파라미터는 생략하기 때문이다.

 

만약 생략하지 않고 사용하려면 익스터널 파라미터를 지정해주면 된다.

func sayHello5(name2 name : String = "Kim",age2 age : Int) -> String{
    return "Hello \(name) is \(age) years old"
}

print(sayHello5(name2 : "Cho", age2: 3))

 

익스터널 파라미터는 외부에서 값을 접근하기 위해, 구분하기 위해서 사용한다.

 

여기서는 name2와 age2가 익스터널 파라미터이다.

 

만약에 앞에 파라미터를 입력을 하기 귀찮거나 싫으면

 

다음과 같이 하면 된다.

func sayHello6(name : String = "Kim",_ age : Int) -> String{
    return "Hello \(name) is \(age) years old"
}

 

원래 처음 파라미터는 생략하니깐 괜찮고

 

뒤쪽에 익스터널 파라미터를 생략하기 위해서는 

언더스코어를 사용하면 된다. "_"

 

 

전체 소스

//: Playground - noun: a place where people can play
import UIKit


func sayHello(){
    print("Hello")
}

sayHello()

func sayHello2(name : String){
    print("Hello \(name)")
}

sayHello2("Cho")


func sayHello3(name : String = "Kim"){
    print("Hello \(name)")
}

sayHello3()


func sayHello4(name : String = "Kim", age : Int) -> String{
    return "Hello \(name) is \(age) years old"
}


print(sayHello4("Cho", age: 3))



// -> String : String 리턴하겠다.
//로컬 파라미터 = name : String
//인자를 여러개 넣을 때, ','로 입력
//왜 앞에는 name을 넣지 않나? 처음에 있는 것은 생략한다.
// 생략하지 않고 사용하려면 익스트널 파라미터를 사용
// name name

func sayHello5(name2 name : String = "Kim",age2 age : Int) -> String{
    return "Hello \(name) is \(age) years old"
}


print(sayHello5(name2 : "Cho", age2: 3))
//익스터널 파라미터는 외부에서 값을 접근하기 위해 구분하기 위해서 사용
//name2, age2가 익스터널 파라미터

//로컬파라미터만 사용하려면 인자값만 넘겨주면 된다. (값만 , 로 넘겨주는 것)
func sayHello6(name : String = "Kim",_ age : Int) -> String{
    return "Hello \(name) is \(age) years old"
}


print(sayHello6("Cho",3))
//언더스코어를 사용하면 됨 '_'

 

 

반응형

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

Swift2 Struct (구조체)  (0) 2021.08.10
Swift2 Class  (0) 2021.08.10
Swift2 IF, SWITCH 문  (0) 2021.08.10
Swift2 For, While 문  (0) 2021.08.10
Swift2 Collection Types (Array, Set, Dictionary)  (0) 2021.08.10