- 작업 환경

 

https://growingsaja.tistory.com/771

Playground : ContentView.swift 파일 수정

 

 

 

 

 

1. function의 형태 3가지

 

//parameter와 return값 둘 다 있는 경우
func 함수이름(파라미터1이름: 파라미터1타입, 파라미터2이름: 파라미터2타입, ...) -> 반환타입 {
    /* 함수 구현부 */
    return 반환값
}

//매개변수가 없는 경우
func 함수이름() -> 반환타입 {
    /* 함수 구현부 */
    return 반환값
}

//반환값이 없는 경우
func 함수이름() -> void{
    /* 함수 구현부 */
}

 

 

 

 

 

2. Parameter와 Return이 있는 함수 예시

 

let num1 : Int = 3
let num2 : Int = 4

func add(a:Int, b:Int) -> Int {
    var result : Int
    result = a+b
    return result
}

print(add(a: num1,b: num2))

func string_ex(name:String, age:Int, height:Double) -> String {
    return "My name is \(name), I'm \(age) years old. My height is \(height)"
}

let Said = string_ex(name: "민지", age:13, height: 163.0)

print(Said)

 

 

 

 

 

3. Parameter와 Return 중 하나가 없는 함수 예시

 

TIP : return이 없는 함수의 경우, 확인해보면 실제로는 비어있는 튜플을 return한다.

 

// Parameter가 없고 Return은 있는 함수

func say_hi() -> String {
    return "Hi~"
}
print(say_hi())



// Parameter는 있지만 Return은 없는 함수

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

let result : Any = type(of: say_hello(name:"철수"))

print(result)

 

 

 

 

 

4. 복수의 값 return 함수 예시

 

func find_minmax(array: [Int]) -> (min: Int, max: Int) {
    var currentMin : Int = array[0]
    var currentMax : Int = array[0]
    
    for i in array[1..<array.count] {
        if currentMin > i {
            currentMin = i
        }
        if currentMax < i {
            currentMax = i
        }
    }
    return (min: currentMin, max: currentMax)
}
let target_array = [1, 3, 5, 7, 9, 51, 21, 16, 94, -4, -24]
let result = find_minmax(array:target_array)
print(result)


func find_minmax_exceptnil(array:[Int]) -> (min:Int, max:Int)? {
    if array.isEmpty {
        return nil
    }
    var currentMax = array[0]
    var currentMin = array[0]
    for i in array[1..<array.count] {
        if currentMin > i {
            currentMin = i
        }
        if currentMax < i {
            currentMax = i
        }
    }
    return (min:currentMin, max:currentMax)
}
let target_array2 = [524, 726, -321, -532, 423, -731]
if let result2 = find_minmax_exceptnil(array: target_array2) {
    print(result2.min)
    print(result2.max)
}

let target_array3 = [Int]()
if let result_nil = find_minmax_exceptnil(array: target_array3) {
    print(type(of:result_nil))
    print(result_nil)
}

 

 

 

 

 

5. 함수 파라미터의 default값 설정 및 파라미터 이름 언급 안하고도 사용할 수 있도록 코딩하기

 

func add(_ firstParameterName: Int = 2, secondParameterName: Int = 5) -> Int {
    let result : Int = firstParameterName + secondParameterName
    return result
}

print(add(3, secondParameterName: 9)) // 3 + 9
print(add(secondParameterName: 15)) // 2 + 15
print(add(5)) // 5 + 5
print(add()) // 2 + 5

 

 

 

+ Recent posts