func sayHello(count: Int, name: String = "길동") -> String {
return ("\(name), 너의 번호는 \(count)")
}
이름을 가지고 함수를 호출하면 argument를 사용
var message = sayHello(count: 10, name: "소프트")
//-> 소프트, 너의 번호는 10
이름을 전달하지 않고도 호출 가능하며 디폴트로 "길동"을 사용
var message = sayHello(count: 100)
print(message) //길동, 너의 번호는 100
인치 단위의 수를 매개변수로 받아 야드, 센티미터, 미터로 변환하고 이 세 개의 값을 하나의 튜플에 넣어 반환해보자.
func converter(length: Float) -> (yards: Float, centimeters: Float, meters: Float) {
let yards = length * 0.0277778
let centimeters = length * 2.54
let meters = length * 0.0254
return (yards, centimeters, meters)
}
var lengthTuple = converter(length: 10)
print(lengthTuple) // (yards: 0.277778, centimeters: 25.4, meters: 0.254)
print(lengthTuple.yards) // 0.277778
print(lengthTuple.centimeters) // 25.4
print(lengthTuple.meters) // 0.254
지정되지 않은 개수의 String 값을 매개변수로 받아서 콘솔에 출력해보자.
func displayStrings(strings: String...) {
for string in strings {
print(string)
}
}
displayStrings(strings: "일", "월", "화", "수")
함수가 값을 반환한 후에도 매개변수에 일어난 변화를 유지하려면, 함수의 선언부에서 매개변수를 입출력 매개변수(inout parameter)로 선언해야 함.
var myValue = 10
//1. inout사용
func doubleValue ( value: **inout** Int) -> Int {
value += value
return value
}
print(myValue) // 10
print(doubleValue(value: &myValue)) //20
print(myValue) //20
//2.inout 사용안함
func doubleValue ( value: Int) -> Int {
value += value //컴파일 에러 남.
return value
}