func 키워드를 이용해서 작성func [함수이름](파라미터)// 함수 작성
func printHello() {
print("Hello, world")
}
// 함수 실행
printHello()
return 키워드를 통해 output을 외부로 전달 가능하다.// ---input---
func printName(name: String) {
print("name is \(name)")
}
printName(name: "Luna") // "name is Luna"
// ---output---
func makeDouble(num: Int) -> Int {
return num * 2
}
let result = makeDouble(num: 3)
print(result) // 6
func [함수이름](외부이름 내부이름:타입) {}
func printName(of name: String) {
print("name is \(name)")
}
printName(of: "Luna") // "name is Luna"
외부 파라미터를 생략하고 싶은 경우 → _
func printName(_ name: String) {
print("name is \(name)")
}
printName("Luna") // "name is Luna"
// 파라미터 ratio에 0.2라는 기본값을 설정.
func discount(price: Double, ratio: Double = 0.2) -> Double {
return price * (1 - ratio)
}
// price만 입력, ratio는 기본값으로 함수실행
let result1 = discount(price: 2000)
print(result1) // 1600
// 기본값을 무시하고 입력가능
let result2 = discount(price: 2000, ratio: 0.5)
princ(result2) // 1000
print() 함수도 해당된다.func printNames(_ names: String...) {
for name in names {
print("name is \(name)")
}
}
printNames("Kim", "Park", "Shin")
// name is Kim
// name is Park
// name is Shin
throws 키워드로 예외사항을 만든다.throws 가 있는 함수는 try 로 호출, do-catch 로 에러감지enum DiviedError: Error {
case cannotZero
}
func divide(dividend: Int, divisor: Int) throws -> Int {
if divisor == 0 {
throw DivideError.cannotZero
}
return Int(divided / divisor)
}
do {
let result = try divide(dividend: 80, divisor: )
print(result)
} catch {
print(error.localizedDescription)
}
// throws로 설정한 대로 divisor가 0으로 입력되었기 때문에 에러감지.
inout 키워드를 이용하면 내부에서 변경이 가능하다.& 을 붙여준다.func makeTriple(num: inout Int) {
num *= 3
}
var num = 8
makeTriple(num: &num)
print(num) // 24