func hello(name: String) -> String{
return "Hello \(name)"!
}
let helloJenny: String = hello(name:"Jenny")
print(helloJenny)
** return 키워드 생략 역시 가능
→ When? : 함수 내부의 코드가 단 한 줄의 표현이고, 그 표현의 return 값이 반환 타입과 일치할 때 가능
func introduce(name: String) -> String{
"제 이름은 " + name + "입니다."
}
** 함수의 매개변수가 여러 개 있을 때 : 함수 호출 시 매개변수 이름을 붙여주고 콜론(:)을 적어준 후 전달인자를 보내줘야 함
func sayHello(myName: String, yourName: String) -> String{
return "Hello \(yourName)! I'm \(myName)"
}
print(sayHello(myName: "yagom", yourName: "Jenny"))
//Parameter name 사용
func 함수 이름(전달인자 레이블 매개변수 이름: 매개변수 타입) → 반환타입){ }
func sayHello(from myName:String, to name:String) -> String{
return "Hello \(name)! I'm \(myName)"
}
//함수 내에서는 매개변수로 control 함
//함수 내부에서는 전달인자 레이블 사용 불가
//함수 호출 할 시 매개변수 이름 사용 불가
→ 전달인자 레이블을 사용하고 싶지 않으면 와일드카드 식별자 사용
func sayHello(_ name: String, _ times: Int)->String{
var result: String = ""
for _ in 0..<times{
result += "Hello \(name)!" + " "
}
return result
}
print(sayHello("Chope", 2))
** 전달인자 레이블을 변경하면 함수의 이름 자체가 변경된다
→ Overload 로 동작 (다른 두 함수)
func sayHello(_ name: String, times: Int = 3)->String{
.
.
.
}
print(sayHello("Hana"))
func sayHello(me: String, friends names: String...) -> String{
var result: String = ""
for friend in names{
result += "Hello \(friend)!" + ""
}
.
.
.
}
print(sayHello(me:"yagom", friends: "Kevin, Sungjo, Wayne"))
func sayHelloWorld() -> Void{
print("Hello world")
}
//or
func sayHelloWorld(){
print("Hello world")
}
func sayHello(name: String, times: Int) -> String{ }
위 함수의 타입은 (String, Int) → String 이다
func sayHelloWorld() { }
위 함수의 타입은 (Void) → Void 이다
or ( ) → Void
or ( ) → ( )
typealias CalculateTwoInts = (Int, Int) -> Int
func addTwoInts(_ a: Int, _ b: Int) -> Int{
return a + b
}
var mathFunction: CalculateTwoInts = addTwoInts
print(mathFunction(2,5))
func crashAndBurn() -> Never{
fatalError("error")
}
func someFunction(isAllIsWell: Bool){
guard isAllIsWell else{
print("very bad thing happened")
crashAndBurn()
}
print("All is well")
}
someFunction(isAllIsWell: true)
//All is well
someFunction(isAllIsWell: false)
//very bad thing happened
//error