Dev/Swift

Swift: 함수 고급(function)

두넌 2023. 5. 14.

DAY 09

함수(function)

 

Swift 문자열 서식(swift string format)


import Foundation
let weight = 60.0
let height = 170.0
let bmi = weight / (height*height*0.0001)
let shortenedBmi = String(format: "%.1f", bmi)
var body = ""

// 이하 switch - case / if-else 로 처리

shortenedBmiDouble 형인 bmi를 소수 두번째 자리까지 표현하고, String형으로 저장한 값이 저장된다

반드시 import Foundation이 필요함

format 이니셜라이저를 사용하여 서식을 지정할 수 있다

 

Default Argument(디폴트 매개변수) 정의


Argument : 외부 매개 변수명

Parameter : 내부 매개 변수명

func sayHello(count: Int, name: String = "길동") -> String {
    return ("\(name), 번호는 \(count)")
}

var message = sayHello(count:100)
print(message)
// 길동, 번호는 100

argument 사용시 argument 사용하고, 전달하지 않으면 default 사용

 

함수로부터 여러 개의 결과 반환


함수는 여러 결과 값들을 튜플로 감싸서 반환할 수 있음

func converter(length: Float) -> (yards: Float, centimeters: Float, meter: Float) {
    let yard = length * 0.0277778
    let centimeters = length * 2.54
    let meters = length * 0.0254
    return (yards, centimeters, meters)
}

var lengthTuple = converter(length:10)
print(lengthTuple)
print(lengthTuple.yards)
print(lengthTuple.centimeters)
print(lengthTuple.meters)

output

(yards: 0.277778, centimeters: 25.4, meters: 0.254)
0.277778
25.4
0.254

 

2개의 정수를 입력받아 가감제 리턴

func sss(x: Int, y: Int) -> (sum: Int, sub: Int, div: Double) {
    let sum = x+y
    let sub = x-y
    let div = Double(x)/Double(y)
    // 같은 자료형만 연산 가능
    return (sum, sub, div)
} 
var result = sss(x:10,y:3)
print(result.sum)
print(result.sub)
print(result.div)
print(result)

output

13
7
3.3333333333333335
(sum: 13, sub: 7, div: 3.3333333333333335)

 

가변 매개변수(variadic parameter)


함수가 가변 매개변수를 받는다는 것을 가리키기 위하여 세 개의 점(...)을 사용

지정되지 않은 개수의 String 값을 매개변수로 받아서 콘솔에 출력

func displayStrings(strings: String...) {
    for string in strings {
        print(string)
    }
}
displayStrings(strings: "일", "이", "삼", "사")
displayStrings(strings: "one", "two")

함수를 호출할 때 매개변수의 개수를 가변적으로 입력해도 된다는 것

 

inout

var myValue = 10
func doubleValue (value: inout Int) -> Int {
    value += value
    return(value)
}
print(myValue)
print(doubleValue(value: &myValue))
print(myValue)

call by reference 하고 싶은 매개변수의 자료형 앞에 inout 사용

call by reference 하고 싶은 변수에 & 붙여서 호출

댓글